将图片打包成文件上传服务器 POST请求 AFNetWorking网络请求
2016-06-22 18:08
567 查看
AFHTTPSessionManager *manager = [AFHTTPSessionManager
manager];
manager.responseSerializer = [AFJSONResponseSerializer
serializer];
//网络请求超时
if (manager.requestSerializer.timeoutInterval
== 10) {
NSLog(@"请求超时");
}
//数据格式
[manager.responseSerializer
setAcceptableContentTypes:[NSSet
setWithObjects:@"application/json",
@"text/json", @"text/javascript",
@"text/html", @"text/css",
@"text/plain", nil]];
//将图片转化为NSDate类型;
UIImage *image = [UIImage
imageNamed:@"baby_icon_cam"];
NSData *imageData =
UIImagePNGRepresentation(image);
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,
YES) lastObject];
NSString *imagePath = [documentPath
stringByAppendingString:@"/image.png"];
//保存文件到本地,document文件目录下面
[imageData writeToFile:imagePath
atomically:YES];
//永久性存储
NSUserDefaults *userDefaults = [NSUserDefaults
standardUserDefaults];
[userDefaults setObject:imagePath
forKey:@"avatar"];
NSLog(@"imagePath = %@",imagePath);
//photo:后台要求传入参数
NSMutableDictionary *parameters = [[NSMutableDictionary
alloc]init];
[parameters setObject:imagePath
forKey:@"photo"];
//服务器接口
NSString *url =
@"http://192.168.1.250/demo/Home/Addcontents/uplo";
//post请求,传输二进制文件的方法,AFNetWorking自带
[manager POST:url
parameters:parameters
constructingBodyWithBlock:^(id<AFMultipartFormData>
_Nonnull formData) {
UIImage *image = [UIImage
imageNamed:@"Classes"];
NSData *data=UIImagePNGRepresentation(image);
NSDateFormatter *formatter = [[NSDateFormatter
alloc]
init];
//
设置时间格式,存储文件的名字,以时间来命名不会有重复命名出现
formatter.dateFormat =
@"yyyyMMddHHmmss";
NSString *str = [formatter
stringFromDate:[NSDate
date]];
NSString *fileName = [NSString
stringWithFormat:@"%@.png", str];
//此处Photo,展示请求数据时字典的key值
[formData
appendPartWithFileData:data
name:@"Photo"
fileName:fileName
mimeType:@"image.png"];
} progress:^(NSProgress *
_Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask *
_Nonnull task, id
_Nullable responseObject) {
NSLog(@"%@",responseObject);
} failure:^(NSURLSessionDataTask *
_Nullable task, NSError *
_Nonnull error) {
NSLog(@"%@",error);
}];
}
manager];
manager.responseSerializer = [AFJSONResponseSerializer
serializer];
//网络请求超时
if (manager.requestSerializer.timeoutInterval
== 10) {
NSLog(@"请求超时");
}
//数据格式
[manager.responseSerializer
setAcceptableContentTypes:[NSSet
setWithObjects:@"application/json",
@"text/json", @"text/javascript",
@"text/html", @"text/css",
@"text/plain", nil]];
//将图片转化为NSDate类型;
UIImage *image = [UIImage
imageNamed:@"baby_icon_cam"];
NSData *imageData =
UIImagePNGRepresentation(image);
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,
YES) lastObject];
NSString *imagePath = [documentPath
stringByAppendingString:@"/image.png"];
//保存文件到本地,document文件目录下面
[imageData writeToFile:imagePath
atomically:YES];
//永久性存储
NSUserDefaults *userDefaults = [NSUserDefaults
standardUserDefaults];
[userDefaults setObject:imagePath
forKey:@"avatar"];
NSLog(@"imagePath = %@",imagePath);
//photo:后台要求传入参数
NSMutableDictionary *parameters = [[NSMutableDictionary
alloc]init];
[parameters setObject:imagePath
forKey:@"photo"];
//服务器接口
NSString *url =
@"http://192.168.1.250/demo/Home/Addcontents/uplo";
//post请求,传输二进制文件的方法,AFNetWorking自带
[manager POST:url
parameters:parameters
constructingBodyWithBlock:^(id<AFMultipartFormData>
_Nonnull formData) {
UIImage *image = [UIImage
imageNamed:@"Classes"];
NSData *data=UIImagePNGRepresentation(image);
NSDateFormatter *formatter = [[NSDateFormatter
alloc]
init];
//
设置时间格式,存储文件的名字,以时间来命名不会有重复命名出现
formatter.dateFormat =
@"yyyyMMddHHmmss";
NSString *str = [formatter
stringFromDate:[NSDate
date]];
NSString *fileName = [NSString
stringWithFormat:@"%@.png", str];
//此处Photo,展示请求数据时字典的key值
[formData
appendPartWithFileData:data
name:@"Photo"
fileName:fileName
mimeType:@"image.png"];
} progress:^(NSProgress *
_Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask *
_Nonnull task, id
_Nullable responseObject) {
NSLog(@"%@",responseObject);
} failure:^(NSURLSessionDataTask *
_Nullable task, NSError *
_Nonnull error) {
NSLog(@"%@",error);
}];
}
相关文章推荐
- 【Python】使用socketserver建立一个异步TCP服务器
- HTTPS那些事(一)HTTPS原理
- Okhttp任务队列工作原理
- 计算机网络——TCP三次、四次握手详解
- Android中的网络技术基础用法
- JAVA发送http、https请求
- Python即时网络爬虫:API说明
- 如何搭建免费的网络验证系统
- [freeCodeCamp] solution to HTTP JSON API SERVER passed!
- 问题:Tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误
- RDO单机安装Openstack以及lvm卷存储与Vxlan网络配置
- 第7讲 Android网络与数据存储
- TCP协议详解---上
- Android基础学习【历史流程重走】 ---- 网络请求(四)
- HTTP Referer简介
- 理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)
- 可视化理解卷积神经网络
- https原理简述
- HTTP浅析
- Android访问网络,HttpURLConnection还是HttpClient?