iOS多张图片总是只能上传一张的问题
2017-02-06 17:30
459 查看
最近在做图片上传的功能,使用的AFNetworking提供的方法上传图片,发现多张图片时总是只有一张图片上传到后台。
有问题的上传代码为:
特别提醒:
创建AFHTTPSessionManager时,直接使用[AFHTTPSessionManager manager]会造成内存泄漏,需要实现单列方法,可参看AFNetworking的Demo
找后台调试后发现,通过上面的方法上传多张图片,实际上只有一张被传到后台,可能的原因是:
上传多张图片时,由于url的参数没有变化,iOS默认是同一个请求,只发送了一次请求给后台,故后台只收到一张图片。
解决办法是将循环把整个请求方法都包起来。代码为:
有问题的上传代码为:
特别提醒:
创建AFHTTPSessionManager时,直接使用[AFHTTPSessionManager manager]会造成内存泄漏,需要实现单列方法,可参看AFNetworking的Demo
AFHTTPSessionManager *manager = [TPHTTPTool sharedHTTPManager]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; //设置响应头可以接收的content-type NSMutableSet *tempSet = [manager.responseSerializer.acceptableContentTypes mutableCopy]; [tempSet addObjectsFromArray:@[@"text/html"]]; manager.responseSerializer.acceptableContentTypes = [tempSet copy]; [manager POST:URL_detailPatientUpdate parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { for(NSInteger i = 0; i < images.count; i++){ //取出单张图片二进制数据 id obj = images[i]; UIImage *image = nil; if ([obj isKindOfClass:[UIImage class]]) { image = (UIImage *)obj; }else{ image = [UIImage imageWithContentsOfFile:obj]; } if (image) { NSData *imageData = [TPDataTool dataWithImage:image maxKB:500.0f]; NSLog(@"图片大小:%ld K" , (long)imageData.length / 1024); // 上传filename NSString *fileName = [NSString stringWithFormat:@"image_%ld.jpg", (long)blockI]; [formData appendPartWithFileData:imageData name:@"file" fileName:fileName mimeType:@"image/jpeg"]; } } } progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { }];
找后台调试后发现,通过上面的方法上传多张图片,实际上只有一张被传到后台,可能的原因是:
上传多张图片时,由于url的参数没有变化,iOS默认是同一个请求,只发送了一次请求给后台,故后台只收到一张图片。
解决办法是将循环把整个请求方法都包起来。代码为:
// 上传多张图片 for(NSInteger i = 0; i < images.count; i++) { AFHTTPSessionManager *manager = [TPHTTPTool sharedHTTPManager]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; //设置响应头可以接收的content-type NSMutableSet *tempSet = [manager.responseSerializer.acceptableContentTypes mutableCopy]; [tempSet addObjectsFromArray:@[@"text/html"]]; manager.responseSerializer.acceptableContentTypes = [tempSet copy]; __block NSInteger blockI = i; [manager POST:URL_detailPatientUpdate parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { //取出单张图片二进制数据 id obj = images[blockI]; UIImage *image = nil; if ([obj isKindOfClass:[UIImage class]]) { image = (UIImage *)obj; }else{ image = [UIImage imageWithContentsOfFile:obj]; } if (image) { NSData *imageData = [TPDataTool dataWithImage:image maxKB:500.0f]; NSLog(@"图片大小:%ld K" , (long)imageData.length / 1024); // 上传filename NSString *fileName = [NSString stringWithFormat:@"image_%ld.jpg", (long)blockI]; [formData appendPartWithFileData:imageData name:@"file" fileName:fileName mimeType:@"image/jpeg"]; } } progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { }]; }
相关文章推荐
- iOS关于使用七牛SDK上传多张图片内存不断增加问题的解决方案
- iOS多张图片上传多线程处理方法(可获取最后一张上传状态后的信号)
- iOS -- 上传多张图片 后台(PHP)代码和上传一张的一样
- onethink后台上传图片,同一张图只能上传一次的问题
- FormData多图片上传(每次只能传送最后一张图片的问题)
- iOS关于多张图片上传、地址返回顺序问题及解决方案
- 微信上传多张图片问题(兼容ios,安卓)
- iOS ASIHTTPRequest上传图片的一个问题
- IOS应用开发-图片处理(拉伸图片 创建缩略图 解决图片旋转的问题 图片编码及上传 将图片写入磁盘)
- 关于php上传多张图片时,选择图片后就可以预览的问题
- ios 上传多张图片总结——IOS网络访问之使用AFNetworking
- ios 上传多张图片总结——IOS网络访问之使用AFNetworking
- iOS关于上传单张及多张图片
- ios 调用相机 上传图片到服务器 图片角度问题
- 七牛iOS按顺序依次上传多张图片,一个block返回所有上传的url
- iOS上传多张图片
- 今天写一些 有关iOS 多图片组合 成一张图片的问题。保持原像素不变
- 关于S3C2440的LCD只能显示2张图片,不能显示多张图片的问题
- iOS上传相册图片到服务器端显示位置翻转问题
- 将一张IOS沙盒下的图片或是txt文件通过post请求上传服务器