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

+0

@Martinは申し訳ありませんが、私は英語が得意ではないです...私は英語で長い質問を書くのは非常に難しいと思います。 – ChangUZ

+0

どうなりますか?ログ/応答/エラー? imageDataとは何ですか? – Ravin

答えて

0

用途:キャリッジリターンと改行文字(\ rを\ nはRNは次のように変更されます)。

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コード:

も私はあなたの画像データについて確認していません。どのようにそれを作成する?

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

内容 - 配置:フォームデータ。名前= \ "イメージ\"; filename = \ "123456700.png \" – ChangUZ

+0

フォームデータ、画像は正しい値ですか?私はちょうどsoemサンプルコードを見た後に書き留めます。 – ChangUZ

+0

内容 - 配置:フォームデータ。名前=写真; filename = \ "123456700.png \" \ r \ n – Ravin

関連する問題