我这里用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 的設定有些矛盾:
這兩個地方你分別設定了兩種mime,
multipart/form-data
和image/png
。哪一個是正確的?需要跟後台溝通一下。跟後台聯調一下,收到你的請求了嗎?請求什麼內容?他返回的什麼?這個錯似乎一般是解析json的時候報,也許是後台沒有回傳合法 json。另外,你的請求是一次性上傳多個文件,不知道你的後台介面是否支持,可以嘗試只傳一張圖片。
AFNetworking 的區塊裡不需要調
dispatch_async(dispatch_get_main_queue()...
它已經是幫你回到主執行緒執行的。能否把 imageData 的資料印出來?
請問lz解決了嗎?
我也遇到報The data couldn’t be read because it isn’t in the correct format.
但是事實上圖片上傳成功了
客戶端程式碼:- (IBAction)upload:(id)sender {
[manager POST:url3 parameters:nil constructingBodyWithBlock:^(id _Nonnull formData) {
}
後端程式碼(python):
class receive(restful.Resource):
api.add_resource(receive, '/upload', methods=['POST'])