2012-02-28 31 views
0

Xcode的源代码如何使用特定文件名将图像数据上传到服务器?

NSString *path = [self pathOfCharacterFolder]; 
    path = [path stringByAppendingPathComponent:[[self fileNamesOfCharacters] objectAtIndex:sender.tag]]; 
    NSData *imageData = [NSData dataWithContentsOfFile:path]; 

// setting up the URL to post to 
NSString *urlString = @"http://temp-sample-page/uploadfile.html"; 

// setting up the request object now 
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:urlString]]; 
[request setHTTPMethod:@"POST"]; 

NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 

请检查下面的源代码

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

NSMutableData *body = [NSMutableData data]; 
[body appendData:[[NSString stringWithFormat:@"rn--%@rn",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image\"; filename=\"123456700.png\"rn"] 
         dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithString:@"Content-Type: multipart/form-datarnrn"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[NSData dataWithData:imageData]]; 
[body appendData:[[NSString stringWithFormat:@"rn--%@--rn",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

[request setHTTPBody:body]; 

// now lets make the connection to the web 
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 

有什么不对? (HTML页面正常工作)

示例页面的html代码

<html> 

<head> 

<META http-equiv="Content-Type" content="text/html;charset=UTF-8"> 

<title>Upload Example</title> 

<script> 
    function validate() { 
     var image =document.getElementById("image").value; 
     if(image!=''){ 
      var checkimg = image.toLowerCase(); 
      if (!checkimg.match(/(\.jpg|\.png|\.JPG|\.PNG|\.jpeg|\.JPEG)$/)){ 
       alert("Please enter Image File Extensions .jpg,.png,.jpeg"); 
       document.getElementById("image").focus(); 
       return false; 
      } 
     } 
     return true; 
    } 
</script> 

</head> 

<body> 

<form action="/uploadfile.html" method="post" 
    enctype="multipart/form-data" onSubmit="return validate();"> 

    <fieldset><legend>Upload File</legend> 
    <table> 
     <tr> 
      <td><input name="fileData" id="image" type="file" /></td> 
     </tr> 
     <tr> 
      <td><br /> 
      </td> 
      <td><input type="submit" value="Upload" /></td> 
     </tr> 
    </table> 
    </fieldset> 
</form> 
</body> 
</html> 
+0

没有解释,一个巨大的代码块,然后享受您的anwser ... – Martin 2012-02-28 09:18:00

+0

@马丁很抱歉,但我不擅长英语......我很用心写长的问题用英文。 – ChangUZ 2012-02-28 09:22:50

+0

会发生什么?任何日志/响应/错误?什么是imageData? – Ravin 2012-02-28 09:25:17

回答

0

使用下面的代码:(RN更改为:\ r \ n)的回车和新行字符。

NSMutableData *body = [NSMutableData data]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image\"; filename=\"123456700.png\"\r\n"] 
         dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithString:@"Content-Type: image/jpg\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[NSData dataWithData:imageData]]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

[request setHTTPBody:body]; 

Upadted代码:

也是我不知道你的imageData。你如何创建它?

NSMutableData *body = [NSMutableData data]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=picture; filename=\"123456700.png\"\r\n"] 
          dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:@"Content-Type: image/png\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[NSData dataWithData:imageData]]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

    [request setHTTPBody:body]; 
+0

内容处理:表单数据;命名= \ “图像\”;文件名= \“123456700.png \” – ChangUZ 2012-02-28 09:37:31

+0

表单数据,图像是否正确?我看到soem示例代码后才写下来。 – ChangUZ 2012-02-28 09:39:27

+0

内容处理:表单数据;名=图片; filename = \“123456700.png \”\ r \ n – Ravin 2012-02-28 09:40:01

相关问题