ios - AFNetworking上传图片,
高洛峰
高洛峰 2017-04-18 09:18:14
0
3
342

我这里用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);});
    }];
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(3)
PHPzhong

いくつか質問があります:

  1. MIME 設定にいくつかの矛盾があります:

    リーリー リーリー

    この 2 つの場所、multipart/form-dataimage/png に 2 つのマイムを設定しました。どちらが正しいでしょうか?バックエンドと通信する必要があります。

  2. リクエストを受信したかどうかを確認するためにバックエンドに連絡してみましょう。どのような内容が要求されますか?彼は何を返しましたか?このエラーは、通常、JSON を解析するときに報告されるようです。おそらく、バックグラウンドで有効な JSON が返されない可能性があります。また、リクエストは複数のファイルを一度にアップロードすることですが、バックエンド インターフェイスがそれをサポートしているかどうかはわかりません。画像を 1 つだけアップロードしてみてもよいでしょう。

  3. AFNetworking ブロックを調整する必要はありません。dispatch_async(dispatch_get_main_queue()... 実行のためにメイン スレッドに戻るのにすでに役立ちます。

いいねを押す +0
大家讲道理

imageDataのデータを印刷できますか?

いいねを押す +0
洪涛

もう解決しましたか?
私もレポートに遭遇しました。データは正しい形式ではないため読み取れませんでした。
しかし実際には、画像のアップロードは成功しました
クライアント コード:- (IBAction)upload:(id )送信者 {

リーリー

[マネージャー POST:url3 パラメーター:nil constructionBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {

リーリー

}

バックエンド コード (Python):
class accept(restful.Resource):

リーリー

api.add_resource(受信、'/upload'、methods=['POST'])

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート