开发者

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开发者_StackOverflow. 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.


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];


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜