2011-03-30 83 views
3

我想将图像数据发送到服务器,为此,我已将该数据附加到请求的HTTP正文并发送给它。我正在使用下面的代码。将图像数据(NSData)发送到服务器

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

现在我必须发送两个不同图像的NSData。所以,只是想问一下,我可以将这两个不同的图像的NSData发送到上面的同一个主体中。 或者,我必须为其他图像的数据编码相同的东西。

请帮我解决这个问题。感谢您。

回答

2

一个小建议:这是比较容易使用Ben Copsey的ASIHTTPRequest将POST数据发送到服务器。

您不需要编写两次POST两个不同的图像,只需用不同的键两次插入图像。请参阅以下示例(使用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];