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

我这里用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 설정에는 몇 가지 모순이 있습니다.

    으아악 으아악

    multipart/form-data, image/png 두 곳에 마임을 설정하셨습니다. 어느 것이 맞나요? 백엔드와 통신해야 합니다.

  2. 백엔드에 연락하여 확인해보세요. 어떤 콘텐츠가 요청되나요? 그는 무엇을 반환 했습니까? 이 오류는 일반적으로 json을 구문 분석할 때 보고되는 것 같습니다. 아마도 배경이 유효한 json을 반환하지 않는 것 같습니다. 또한 귀하의 요청은 한 번에 여러 파일을 업로드하는 것입니다. 귀하의 백엔드 인터페이스가 이를 지원하는지 모르겠습니다. 사진을 하나만 업로드해 보세요.

  3. AFNetworking 블록을 조정할 필요가 없습니다dispatch_async(dispatch_get_main_queue()... 이미 실행을 위해 메인 스레드로 돌아가는 데 도움이 되었습니다.

大家讲道理

imageData의 데이터를 인쇄할 수 있나요?

洪涛

해결하셨나요?
데이터 형식이 올바르지 않아 읽을 수 없다는 보고서도 접했습니다.
그런데 실제로 이미지 업로드에 성공했습니다
클라이언트 코드:- (IBAction)upload:(id )발신자 {

으아악

[관리자 POST:url3 매개변수:nil constructionBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {

으아악

}

백엔드 코드(python):
클래스 수신(restful.Resource):

으아악

api.add_resource(수신, '/upload', 메소드=['POST'])

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿