Sid
Sid

Reputation: 407

Sending an image data(NSData) to the server

I want to send image data to the server, For that, I have appended that data to the HTTP body of the request and sent it. I am using the following code.

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:@"http://developers.our-works.com/forms/TestReceiver.aspx"]];
[request setHTTPMethod:@"POST"];

NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];

// now lets create the body of the post 
NSMutableData *body = [NSMutableData data];

[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];    
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n",tempFileName] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imgdata]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

//data into the string..... verifying............
NSString *strTest = [[NSString alloc] initWithData:body encoding:NSUTF8StringEncoding];
NSLog(@"%@",strTest);

// setting the body of the post to the request
[request setHTTPBody:body];

// now lets make the connection to the web
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

Now I have to send the NSData of the two different images. So, just want to ask that, can I send those two different image's NSData within the same body as above. Or, I have to code the same thing for the other image's Data.

Please, help me out of this. Thanking you.

Upvotes: 3

Views: 4703

Answers (2)

Willy
Willy

Reputation: 9891

A little suggestion : It is easier to use Ben Copsey's ASIHTTPRequest to do POST data to server.

You don't need to code twice to POST two different image just insert the image twice with a different keys. See example below (using ASIHTTPRequest)

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"Ben" forKey:@"first_name"];
[request setPostValue:@"Copsey" forKey:@"last_name"];
[request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];
[request setFile:@"/Users/ben/Desktop/ben2.jpg" forKey:@"photo2"];
[request startSynchronous];

Upvotes: 2

Brij
Brij

Reputation: 6122

You have to code same thing for other data if server needs two images together It depends on web service.you can take idea from following link:
http://urenjoy.blogspot.com/2009/12/pass-parameter-web-service-image-upload.html

Upvotes: 1

Related Questions