如何在AfNetworking中发送带参数的图像

时间:2018-03-29 10:53:33

标签: ios objective-c afnetworking

我发送参数但没有工作,在Postman Itis工作中查看下面的截图enter image description here

的NSDictionary *帕拉姆= @ {@ “api_token”:@ “6fkgRh72y6L8DJi1zgYJr55zA0l3vrgnUOU3w6qFDCgX6e0QzwPLwT5D8nOHs8Ye35kFCjrAzSDNYvSsvkxJrmnMxX4iO5GXo7bgjcyKaidhmZ9SqWDEyspnsEFTFjnAX0V80FeJYZ6w8IdOpjoGNO”

                                             };
                        NSData *imageData = UIImagePNGRepresentation(image);
                        NSString*url=[NSString stringWithFormat:@"http://asinfrastructure.com/mazad/public/api/v1/user/auction/media/upload/photo"];
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
                        [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
                        [manager POST:url parameters:Param constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
                            [formData appendPartWithFileData:imageData
                                                        name:@"photo"
                                                    fileName:@"Image.png" mimeType:@"image/jpeg"];


                        } progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
                            NSLog(@"Response: %@", responseObject);
                        } failure:^(NSURLSessionDataTask *task, NSError *error) {
                            NSLog(@"Error: %@", error);
                            NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:(NSData *)error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] options:NSJSONReadingAllowFragments error:&error];

                            NSLog(@"%@",JSON);
                        }];

1 个答案:

答案 0 :(得分:1)

  

您的代码效果很好。

-(void)uploadImage1:(UIImage *)img Dictionary:(NSMutableDictionary *)dictParam {
        NSData *imageData = UIImageJPEGRepresentation(img, 0.7);

        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
        [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
        [manager POST:kWOJSignUPCall parameters:dictParam constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
            if (imageData != nil) {
                [formData appendPartWithFileData:imageData
                                            name:@"profile_image"
                                        fileName:@"user_image.jpg"
                                        mimeType:@"image/jpg"];
            }


        } progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
            NSLog(@"Response: %@", responseObject);
        } failure:^(NSURLSessionDataTask *task, NSError *error) {
            NSLog(@"Error: %@", error);
            NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:(NSData *)error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] options:NSJSONReadingAllowFragments error:&error];

            NSLog(@"%@",JSON);
        }];
    }

或试试这个。

-(void)uploadImage1:(UIImage *)img Dictionary:(NSMutableDictionary *)dictParam {
    NSData *imageData;
    if (img == nil) {

    }
    else {
        imageData = UIImageJPEGRepresentation(img, 0.7);
    }

    AFHTTPRequestSerializer *requestSerializer = [AFHTTPRequestSerializer serializer];
    AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer];

    requestSerializer = [AFJSONRequestSerializer serializer];
    responseSerializer = [AFJSONResponseSerializer serializer];

    NSError *__autoreleasing* error = NULL;

    NSMutableURLRequest *request = [requestSerializer multipartFormRequestWithMethod:@"POST" URLString:kWOJSignUPCall parameters:dictParam constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        if (imageData != nil) {
            [formData appendPartWithFileData:imageData
                                        name:@"profile_image"
                                    fileName:@"user_image.jpg"
                                    mimeType:@"image/jpg"];
        }
    } error:(NSError *__autoreleasing *)error];

    AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];

    manager.responseSerializer = responseSerializer;

    NSURLSessionUploadTask *uploadTask;
    uploadTask = [manager uploadTaskWithStreamedRequest:request progress:^(NSProgress * _Nonnull uploadProgress) {

    }
                                      completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
                                          if (error) {
                                              NSLog(@"ERROR WHILE UPLOADING IMAGE = %@",error.localizedDescription);
                                          }
                                          else {
                                              if ([[responseObject valueForKey:@"status"] intValue] == 1) {
                                                  NSLog(@"Image Upload Done.");
                                              }
                                              else {
                                                  NSLog(@"Image Upload Fails.");
                                              }
                                          }
                                      }];

    [uploadTask resume];
}