2012-02-29 77 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