2012-02-28 61 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

相關問題