ios - AFNetworking上传图片,
本文介绍了ios - AFNetworking上传图片,的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
我这里用AFNetworking上传图片
报The data couldn’t be read because it isn’t in the correct format.有人帮忙看看是哪里出问题了么?下面是我写的代码。
AFHTTPRequestOperationManager *m = [AFHTTPRequestOperationManager manager];
m.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"application/json", nil];
m.requestSerializer = [AFHTTPRequestSerializer serializer];
[m.requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"Content-Type"];
NS_APPDebugLog(@"请求链接:%@/%@", urlString, parametersDic);
[m POST:@"http://59.48.96.118:7001/portal/SI_USR00025/upload.do" parameters:nil
constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
for (int i = 0; i < imagePickerArray.count; i++)
{
UIImage *portraitImg = imagePickerArray[i];
portraitImg = [UIImage scaleToSize:portraitImg];
portraitImg = [portraitImg fixOrientation];
NSData *imageData = [NSData compressImage:portraitImg];
[formData appendPartWithFileData:imageData
name:[NSString stringWithFormat:@"img.img%d", i+1]
fileName:@"image.png"
mimeType:@"image/png"];
}
} success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
NSLog(@"成功");
} failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) {
NSLog(@"失败");
dispatch_async(dispatch_get_main_queue(),^{failure(error);});
}];
解决方案
这里有几个问题:
-
mime 的设置有一些矛盾:
[m.requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"Content-Type"];
[formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"img.img%d", i+1] fileName:@"image.png" mimeType:@"image/png"];
这两个地方你分别设置了两种mime,
multipart/form-data
和image/png
。哪一个是正确的?需要跟后台沟通一下。 跟后台联调一下,收到你的请求了吗?请求什么内容?他返回的什么?这个错似乎一般是解析json的时候报,也许是后台没有返回合法 json。另外,你的请求是一次性上传多个文件,不知道你的后台接口是否支持,可以尝试只传一张图片。
AFNetworking 的块里不需要调
dispatch_async(dispatch_get_main_queue()...
它已经是帮你回到主线程执行的。
这篇关于ios - AFNetworking上传图片,的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文