我这里用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 設定にいくつかの矛盾があります:
リーリー リーリーこの 2 つの場所、
multipart/form-data
とimage/png
に 2 つのマイムを設定しました。どちらが正しいでしょうか?バックエンドと通信する必要があります。リクエストを受信したかどうかを確認するためにバックエンドに連絡してみましょう。どのような内容が要求されますか?彼は何を返しましたか?このエラーは、通常、JSON を解析するときに報告されるようです。おそらく、バックグラウンドで有効な JSON が返されない可能性があります。また、リクエストは複数のファイルを一度にアップロードすることですが、バックエンド インターフェイスがそれをサポートしているかどうかはわかりません。画像を 1 つだけアップロードしてみてもよいでしょう。
AFNetworking ブロックを調整する必要はありません。
dispatch_async(dispatch_get_main_queue()...
実行のためにメイン スレッドに戻るのにすでに役立ちます。imageDataのデータを印刷できますか?
もう解決しましたか?
リーリー私もレポートに遭遇しました。データは正しい形式ではないため読み取れませんでした。
しかし実際には、画像のアップロードは成功しました
クライアント コード:- (IBAction)upload:(id )送信者 {
[マネージャー POST:url3 パラメーター:nil constructionBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
リーリー}
バックエンド コード (Python):
リーリーclass accept(restful.Resource):
api.add_resource(受信、'/upload'、methods=['POST'])