2012-02-29 59 views
0

我想將圖像數據對象上傳到服務器(.html),文件名爲(123456700.png)。如何設置正確的HTTP標頭和正文

此代碼沒有錯誤,但上傳不起作用。

組信頭

// Initial Setting 
NSString *urlString = @"http://121.78.147.19/uploadfile.html"; 
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 

// Set Heeader 
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:urlString]]; 
[request setHTTPMethod:@"POST"]; 

// type: text/html;charset=UTF-8; 
NSString *contentType = [NSString stringWithFormat:@"text/html;charset=UTF-8; boundary=%@",boundary]; 
[request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

設定的主體(imgData有沒有問題,我檢查imgData.length)

NSMutableData *body = [NSMutableData data]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

// Disposition: form-data, name="image" filename="123456700.png" ??? 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image\"; filename=\"123456700.png\"\r\n"] 
        dataUsingEncoding:NSUTF8StringEncoding]]; 

// Type: application/octet-stream ??? 
[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]]; 
[request setHTTPBody:body]; 

運行(沒有錯誤,resData是HTML的文本數據。

NSURLResponse *response = nil; 
NSError *error = nil; 
NSData *resData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

================================================ ==============================

/uploadfile.html屏幕截圖(Chrome/Below Info和文本是html源代碼。)

頁面沒有問題。上傳工作正常通過網頁。

帶有文本「文件選擇器」的按鈕是「選擇文件」按鈕。

------------------------------- Web Page Screen Capture ----------- -----------------------------我

/uploadfile.html

+0

您的服務器是否收到任何數據?並且,您如何獲得imgData – Hanon 2012-02-29 03:44:18

+0

我無法檢查服務器。和imgData = [NSData dataWithFile:~~];我檢查了路徑和數據長度。 imgData沒有問題 – ChangUZ 2012-02-29 04:09:18

+0

您的網站不接受任何發佈的請求數據。你必須使用服務器編程來獲得它。 – Hanon 2012-02-29 04:31:47

回答

0
  1. HTTP主體數據是在錯誤的順序,
  2. 內容類型錯誤

在這裏看到的更多詳細規範:Form-based File Upload in HTML

+0

2.更改@「Content-Type:image/png \ r \ n \ r \ n」? – ChangUZ 2012-02-29 05:58:19

+0

我不知道1 ...我對英語不好。我不是英文用戶。 – ChangUZ 2012-02-29 05:59:31

+0

更改名稱...是正確的? @「Content-Disposition:form-data; name = \」fileData \「; filename = \」123456700.png \「\ r \ n」 – ChangUZ 2012-02-29 06:03:05