Skip to content

Instantly share code, notes, and snippets.

@mombrea
Created January 17, 2014 01:49
Show Gist options
  • Select an option

  • Save mombrea/8467128 to your computer and use it in GitHub Desktop.

Select an option

Save mombrea/8467128 to your computer and use it in GitHub Desktop.
example of a multi-part form post in objective-c
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"REST URL PATH"]];
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[request setHTTPShouldHandleCookies:NO];
[request setTimeoutInterval:60];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"unique-consistent-string";
// set Content-Type in HTTP header
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request setValue:contentType forHTTPHeaderField: @"Content-Type"];
// post body
NSMutableData *body = [NSMutableData data];
// add params (all params are strings)
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=%@\r\n\r\n", @"imageCaption"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"%@\r\n", @"Some Caption"] dataUsingEncoding:NSUTF8StringEncoding]];
// add image data
if (imageData) {
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=%@; filename=imageName.jpg\r\n", @"imageFormKey"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:imageData];
[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
}
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
// setting the body of the post to the reqeust
[request setHTTPBody:body];
// set the content-length
NSString *postLength = [NSString stringWithFormat:@"%d", [body length]];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if(data.length > 0)
{
//success
}
}];
@Asha149

Asha149 commented Oct 17, 2014

Copy link
Copy Markdown

Hi. Thanks for the example. Works well.
Im facing issues uploading multiple images using the above code. It only accepts the first image. #ios

@martinrybak

Copy link
Copy Markdown

Thanks very much for this!

@jonathanjimenez

Copy link
Copy Markdown

Thanks :D

@jonathanjimenez

Copy link
Copy Markdown

God bless you.

@datwiki

datwiki commented Apr 13, 2015

Copy link
Copy Markdown

hi, thanks for posting the code. i am sticking with 2 questions:

  1. what exactly is the object "image"
  2. name=%@; filename=imageName.jpg\r\n" => if we are selecting image from device library then what will replace the "imageName.jpg"?

Thanks much for your help

@NareshKalakuntla

Copy link
Copy Markdown

Thank you 😄 This helped me a lot.

@SushilSharma12

Copy link
Copy Markdown

What to do in case of video ?
How to upload video with multipart?

ghost commented Jul 29, 2015

Copy link
Copy Markdown

Finally it worked, thank you for your code, I had extra "s 👯

@shpakovski

Copy link
Copy Markdown

Thank you very much!

@asefnoor

Copy link
Copy Markdown

Thanks. worked like charm.

@Dhavalmaheta

Copy link
Copy Markdown

Thanks a lot..
its working fine.

@zaczh

zaczh commented Apr 17, 2016

Copy link
Copy Markdown

very useful!

@tvPM123

tvPM123 commented Apr 19, 2016

Copy link
Copy Markdown

Hi. Thanks for the example. Works well.
Im facing issues uploading multiple images using the above code. It only accepts the first image. #ios

Please help to execute this code for multiple images

@sweatyc

sweatyc commented Jun 23, 2016

Copy link
Copy Markdown

What if i want to upload gif (to Giphy.com)?

@mohsinka

Copy link
Copy Markdown

Awesome! So simplistic.

@samuelDeveloperiOS

Copy link
Copy Markdown

Great!

@brunomunizaf

Copy link
Copy Markdown

Thank you, you have just saved me from using AFNetworking and/or others. I'm facing an issue now with the HTTP Body - too long when trying to upload a huge gif file. :(

@Rj707

Rj707 commented Dec 8, 2017

Copy link
Copy Markdown

@Asha149 did you find any solution?

@Rj707

Rj707 commented Dec 8, 2017

Copy link
Copy Markdown

and can we upload an array of images to server? using NSURLConnection

@Supertecnoboff

Copy link
Copy Markdown

What if you want to post a video using multipart/form-data ?

@erimkurt

erimkurt commented May 2, 2018

Copy link
Copy Markdown

Thanks man! You saved me...

@krasnorutsky

Copy link
Copy Markdown

Thank you! You saved my day

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment