2010-06-25 74 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建設之一。你需要知道服務器希望解決的問題。

我建議你將請求轉儲爲一個字符串,粘貼到瀏覽器中,看看你是否可以得到它的工作。這樣,您可以確保您瞭解請求的正確形式,以便您可以使用代碼進行構建。