利用AFNetworking上传文件
来源:互联网 发布:周易六爻算法 编辑:程序博客网 时间:2024/04/29 10:59
AFNetworking是我们在日常开发中,常用于发送网络请求的第三方类库。其中,我们经常用到的方法有两类,一是普通的网络请求,其常用方法为:
//GET请求 - (AFHTTPRequestOperation *)GET:(NSString *)URLString parameters:(id)parameters success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure //POST请求 - (AFHTTPRequestOperation *)POST:(NSString *)URLString parameters:(id)parameters success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
对此,我不多说,相信大家都会,第二类就是我要重点说的上传文件的网络请求,跟普通的网络请求方法十分相似:
[objc] view plain copy 在CODE上查看代码片派生到我的代码片- (AFHTTPRequestOperation *)POST:(NSString *)URLString parameters:(id)parameters constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
这个方法中多了一个block匿名函数,它会在网络请求发送之前调用,我们要添加所需上传图片的数据,就要在这里进行,如:
//设置网络请求管理者 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; //发送网络请求 [manager POST:url parameters:paramsDic constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { for (int i = 0; i < self.imageArr.count; i++) { UIImage *image = self.imagArr[i]; NSData *data = UIImagePNGRepresentation(image); [formData appendPartWithFileData:data name:[NSString stringWithFormat:@"photos[%d]",i] fileName:[NSString stringWithFormat:@"image%d.png",i] mimeType:@"image/png"]; } } success:^(AFHTTPRequestOperation *operation, id responseObject) { } failure:^(AFHTTPRequestOperation *operation, NSError *error) { }];
注意:
1、name:多文件上传时,name不能重复,不能重复,不能重复,重要的事情说三遍,我就是在这里卡住了,当时我的接口文档中让我传的参数是“photos[]”,结果我真的傻乎乎的只传了一个“photos[]”,其结果就是只有一张图片上传成功,这也体现了交流的重要性,至于具体怎么传,接口文档一般都有说明,如不清楚,请与后台人员沟通,这是服务器用于接收你所上传文件的参数名,十分重要。
2、fileName:不能重复,这个名字由用户决定,只要不重复,其它没有要求。
3、mimeType:你所要上传文件的类型,各种文件所对应的类型详情请自己百度。
上传图片一般会与相册与照相机结合使用,但是其图片一般较大,可使用UIImageJPEGRepresentation(image, 0.1)方法对图片进行一定程度的压缩,具体压缩情况要结合你的实例。作一点说明:UIImagePNGRepresentation(image)与UIImageJPEGRepresentation(image, 0.1)方法都会返回图片的data数据,如果将data数据转化成图片,图片类型由后缀名决定,如果保存为.png后缀的图片,就是png图片,如果保存为.jpg后缀的图片,则就是jpg图片,故不要被方法名中的PNG和JPEG所影响。
最后,提醒一下大家:有时候你可能碰到上传图片的网络请求失败,从而会怀疑自己是不是用错了方法,如果你的文件上传是利用multipart/form-data请求上传,则使用上述方法是没有错的,这时你需要与你的后台成员多进行沟通,因为错的并不一定是你,自信一点。
- 利用AFNetworking上传文件
- iOS- 利用AFNetworking(AFN) - 实现文件上传
- 利用AFNetworking上传图片
- iOS-利用AFNetworking(AFN 1.x)-实现文件上传
- iOS 学习日志 :利用AFNetWorking 做文件上传
- AFNetworking 上传文件
- AFNetworking上传文件
- AFNetWorking 文件上传Demo
- iOS AFNetWorking上传文件
- 97 AFNetworking文件上传
- AFNetworking 上传文件
- AFNetworking 上传文件
- AFNetworking文件上传注意事项
- 利用AFNetworking下载文件
- AFNetworking 上传图片或文件
- AFNetworking 上传文件、显示上传进度 - 家柱
- iOS- 利用AFNetworking(AFN) - 实现图片上传 -
- iOS利用AFNetworking(AFN) 实现图片上传
- 多态
- vmware下centos 7.2添加硬盘使用
- qsort快排函数
- Linux下增加交换分区的大小
- Eigen优化实录
- 利用AFNetworking上传文件
- MassAssignmentException in compiled.php line 10410:name
- group by 字段 count 中包含子查询 优化 方式
- 接口
- java环境变量的配置详解
- 博客是怎样写的
- 网易新闻客户端链接
- CSS解决图片过大撑破DIV网页方法
- rails 中will_paginate-bootstrap做分页