上传图片的问题(iphone sdk,multipartform-data)

时间:2010-06-25 12:46:35

标签: objective-c iphone post upload 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”。 有人能告诉我问题在哪里吗?

1 个答案:

答案 0 :(得分:0)

missing parameter u消息几乎肯定来自服务器上的PHP。我认为它应该属于"u"\r\n\r\n构造中的一个。您需要知道服务器期望解决它的问题。

我建议您将帖子请求转储为字符串,粘贴到浏览器中,看看是否可以让它工作。这样,您可以确保您了解请求的正确形式,以便您可以在代码中构建它。