iOS 上传图片方法总结
2015-12-23 16:30
441 查看
开题:
iOS 开发中难免会遇到上传图片,一般情况下有两种方式:
1. 自己动手写(利用NSURLMutableRequest等系统类)
2. 使用第三方(如AFNetworking)
据我所经历的,如果你不是大神,还是用第三方吧,自己写的话会很麻烦,需要拼接一些请求头,请求体等,就算弄好了也是废了很多时间了;当然,费时间并不是我不推荐自己动手写,因为在我现在接手的项目中,就是使用的自己写的,上传中会出现丢图等各种问题,特别在网络不好的情况下;
面对这样的上传图片,我的Boss 交给我了一个课题,就是改善上传图片的网络底层库;看在我不是大神的份上,我就选择了AFNetwoking;
So,对于自己动手实现的方法,在这里我就不多写了;接下来主要是AFNetwoking实现方法:
至于如何导入第三方,我不多说,你是直接拉进也行,使用cocoapods也行;
进入正题:
以下是上传图片的方法:
接下来是如何调用:
参数说明:
- strUrl:上传图片的服务器地址
- dataParams:数据参数(如token等)
- imageParams:图片参数(字典中的object一定要是UIImage类型;当然我写的是这样,你也可以修改为其他)
- Success:上传成功后的Block回调(resultDic是服务器返回的结果)
- Failed:上传失败后的Block回调(error是错误结果)
以上就是AFNetworking上传图片的方法, 分享给大家一起学习,你也可以自己改造这个方法,如果你发现更好的方法,请留言给我或者发邮件给我zhaoashen@gmail.com;
iOS 开发中难免会遇到上传图片,一般情况下有两种方式:
1. 自己动手写(利用NSURLMutableRequest等系统类)
2. 使用第三方(如AFNetworking)
据我所经历的,如果你不是大神,还是用第三方吧,自己写的话会很麻烦,需要拼接一些请求头,请求体等,就算弄好了也是废了很多时间了;当然,费时间并不是我不推荐自己动手写,因为在我现在接手的项目中,就是使用的自己写的,上传中会出现丢图等各种问题,特别在网络不好的情况下;
面对这样的上传图片,我的Boss 交给我了一个课题,就是改善上传图片的网络底层库;看在我不是大神的份上,我就选择了AFNetwoking;
So,对于自己动手实现的方法,在这里我就不多写了;接下来主要是AFNetwoking实现方法:
至于如何导入第三方,我不多说,你是直接拉进也行,使用cocoapods也行;
进入正题:
以下是上传图片的方法:
+(void)uploadImageWithUrl:(NSString *)strUrl dataParams:(NSMutableDictionary *)dataParams imageParams:(NSMutableDictionary *) imageParams Success:(void(^)(NSDictionary* resultDic)) success Failed:(void(^)(NSError *error))fail { NSArray *keys = [imageParams allKeys]; UIImage * image = [imageParams objectForKey:[keys firstObject]]; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; //对SSL做处理,防止上传失败 AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; securityPolicy.allowInvalidCertificates = YES; securityPolicy.validatesDomainName = NO; manager.securityPolicy = securityPolicy; [manager.requestSerializer willChangeValueForKey:@"timeoutInterval"]; manager.requestSerializer.timeoutInterval = 120; [manager.requestSerializer didChangeValueForKey:@"timeoutInterval"]; [manager POST:strUrl parameters:dataParams constructingBodyWithBlock:^(id formData) { [formData appendPartWithFileData:UIImageJPEGRepresentation(image, 0.5) name:[keys firstObject] fileName:[NSString stringWithFormat:@"%@.jpeg",[keys firstObject]] mimeType:@"image/jpeg"]; } success:^(AFHTTPRequestOperation *operation, id responseObject) { if (success) { success(responseObject); } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { if (fail) { fail(error); } }]; }
接下来是如何调用:
-(void)uploadImageAction { NSString *url = @"https://github.com/Ashen-Zhao"; NSMutableDictionary *dpp =[@{@"token":@"zhaoshenshenazhao"} mutableCopy]; NSMutableDictionary *pimgs= [@{@"file":[UIImage imageNamed:@"a.jpg"]} mutableCopy]; [NetworkEngine uploadImageWithUrl:url dataParams:dpp imageParams:pimgs Success:^(NSDictionary* resultDic) { NSLog(@"%@", resultDic); } Failed:^(NSError *error) { }]; }
参数说明:
- strUrl:上传图片的服务器地址
- dataParams:数据参数(如token等)
- imageParams:图片参数(字典中的object一定要是UIImage类型;当然我写的是这样,你也可以修改为其他)
- Success:上传成功后的Block回调(resultDic是服务器返回的结果)
- Failed:上传失败后的Block回调(error是错误结果)
以上就是AFNetworking上传图片的方法, 分享给大家一起学习,你也可以自己改造这个方法,如果你发现更好的方法,请留言给我或者发邮件给我zhaoashen@gmail.com;
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- php修改上传图片尺寸的方法
- 为ckeditor编辑器加上传图片的功能
- 上传图片时JS自动显示图片
- ASP.NET实现上传图片并生成缩略图的方法
- Android获取SD卡中选中图片的路径(URL)示例
- ASP.Net 上传图片并生成高清晰缩略图
- FileUpload上传图片(图片不变形)
- 简单PHP上传图片、删除图片实现代码
- php上传图片到指定位置路径保存到数据库的具体实现
- 上传图片前判断文件格式与大小验证文件是不是图片
- 彻底解决ewebeditor网站后台不能上传图片的方法
- javascript上传图片前预览图片兼容大多数浏览器
- javascript 客户端验证上传图片的大小(兼容IE和火狐)