Search code examples
objective-cafnetworking-3

Image upload using AFMultipartFormData AFNetworking 3.0


NSURL *URL = [NSURL URLWithString:@"some APi"];

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

UIImage *myImageObj = [UIImage imageNamed:@"avatar.jpg"];
NSData *imageData= UIImagePNGRepresentation(myImageObj);

[manager POST:URL.absoluteString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileData:imageData
                                name:@"file"
                            fileName:@"avatar.jpg" mimeType:@"image/jpeg"];

    // etc.
} progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
    NSLog(@"Response: %@", responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
    NSLog(@"Error: %@", error);
}];

I am trying to upload image using afnetworking 3.0 but getting this error every time

Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: internal server error (500)" UserInfo={com.alamofire.serialization.response.error.response= { URL: Some URL } { status code: 500, headers { "Access-Control-Allow-Origin" = "*"; "Content-Length" = 291; "Content-Type" = "text/html"; Date = "Thu, 26 Jan 2017 11:41:19 GMT"; Server = "Werkzeug/0.11.11 Python/2.7.12"; } },


Solution

  • luckily postman provide objective-C and some other languages code but with AFNetworking i used this

        NSURL *URL = [NSURL URLWithString:@"your URL"];
    
        UIImage *myImageObj = [UIImage imageNamed:@"image.jpg"];
        NSData *imageData= UIImageJPEGRepresentation(myImageObj, 0.6);
    
        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
        //manager.responseSerializer=[AFJSONResponseSerializer serializer];
        manager.requestSerializer = [AFHTTPRequestSerializer serializer];
        manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    
        [manager.requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"Content-Type"];
    
        [manager POST:URL.absoluteString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
            [formData appendPartWithFileData:imageData
                                        name:@"file"
                                    fileName:@"image.jpg" mimeType:@"image/jpeg"];
    
            // etc.
        } progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
            NSLog(@"Response: %@", responseObject);
    
            NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
            NSLog(@"%@",string);
    
        } failure:^(NSURLSessionDataTask *task, NSError *error) {
            NSLog(@"Error: %@", error);
        }];