2010-06-25 76 views
0

我需要将图片上传到自定义服务器。我有这样的代码:上传图片时出现问题(iphone sdk,multipartform-data)

NSString* boundary = @"blablablablabla"; 
NSString* boundaryString = [NSString stringWithFormat:@"\r\n--%@\r\n", boundary]; 
NSString* boundaryStringFinal = [NSString stringWithFormat:@"\r\n--%@--\r\n", boundary]; 

NSMutableData* postData = [NSMutableData dataWithCapacity:[imageData length] + 1024]; 

NSString* s = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"s\"\r\n\r\n%@\r\n", @"addimage"]; 
NSString* ad = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"ad\"\r\n\r\n%@\r\n", adIdx]; 
NSString* u = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"u\"\r\n\r\n%@\r\n", uid]; 

[postData appendData:[boundaryString dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[s dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[ad dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[u dataUsingEncoding:NSUTF8StringEncoding]]; 

[postData appendData:[boundaryString dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image\";\r\nfilename=\"image.jpg\"\r\nContent-Type: image/jpg\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[postData appendData:imageData]; 
[postData appendData:[boundaryStringFinal dataUsingEncoding:NSUTF8StringEncoding]]; 

NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http:a.b.c/d.php"]]; 
[request setHTTPMethod:@"POST"]; 

NSString* dataLength = [NSString stringWithFormat:@"%d", [postData length]]; 
[request addValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary] forHTTPHeaderField:@"Content-Type"]; 
[request addValue:@"a.b.c" forHTTPHeaderField:@"Host"]; 
[request addValue:dataLength forHTTPHeaderField:@"Content-Length"]; 
[request setHTTPBody:postData]; 

[NSURLConnection connectionWithRequest:request delegate:self]; 

它看起来不错,但在回应此请求我有这样的行:“缺少参数u”。 有人可以告诉我问题在哪里吗?

+0

您可能想要展示一个示例,说明针对您的特定服务器的工作请求的样子,然后您生成的请求的代码看起来像。 – TechZen 2010-06-25 13:03:32

回答

0

missing parameter u消息几乎肯定来自服务器上的PHP。我认为它应该是在"u"\r\n\r\n建设之一。你需要知道服务器希望解决的问题。

我建议你将请求转储为一个字符串,粘贴到浏览器中,看看你是否可以得到它的工作。这样,您可以确保您了解请求的正确形式,以便您可以使用代码进行构建。