2012-12-03 9 views
5

私はjsonの解析を使ってWebサービスを扱っています。私は、Webサービスから画像を取得することができる、誰かが画像を投稿する方法を助けることができますか?どのようにWebサービスに画像を投稿できますか?それはこの線に沿って何かになりますWebサーバに画像を投稿するには

+0

を使用するための最良の方法であるあなたは、 'ASIHTTPRequest'の使用を検討していましたか? – limon

+0

@mstfbsnli私はiOSを初めて使っています...だから、どうすればASIHTTPRequest..Pleaseを使って実装できますか? – Shivaay

+0

ここには[説明](http://allseeing-i.com/ASIHTTPRequest/How使用法) – limon

答えて

2

ここをクリックしてください。imagesideのコード化ランダムな名前でアップロードします。また、画像リンクを応答として与えるでしょう。

//Create a folder named images in your server where you want to upload the image. 
// And Create a PHP file and use below code . 


<?php 
$uploaddir = 'images/'; 
$ran = rand() ; 

$file = basename($_FILES['userfile']['name']); 
$uploadfile = $uploaddir .$ran.$file; 

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
     echo "www.host.com/.../images/{$uploadfile}"; 
} 
?> 

、ここでは、iOSコード

- (IBAction)uploadClicked:(id)sender 
{ 
    /* 
     turning the image into a NSData object 
     getting the image back out of the UIImageView 
     setting the quality to 90 
     */ 
     NSData *imageData = UIImageJPEGRepresentation(imageView.image, 90); 
     // setting up the URL to post to 
     NSString *urlString = @"your URL link"; 

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

     /* 
     add some header info now 
     we always need a boundary when we post a file 
     also we need to set the content type 

     You might want to generate a random boundary.. this is just the same 
     as my output from wireshark on a valid html post 
     */ 
     NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 
     NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
     [request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

     /* 
     now lets create the body of the post 
     */ 
     NSMutableData *body = [NSMutableData data]; 
     [body appendData:[[NSString stringWithFormat:@"rn--%@rn",boundary] dataUsingEncoding:NSUTF8StringEncoding]];  
     [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name="userfile"; filename="ipodfile.jpg"rn"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-streamrnrn"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[NSData dataWithData:imageData]]; 
     [body appendData:[[NSString stringWithFormat:@"rn--%@--rn",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
     // setting the body of the post to the reqeust 
     [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]; 

     NSLog(returnString); 

} 
+0

私はiOS.soを初めて使っています。これを行う方法を少し詳しく説明しますか? – Shivaay

+0

私の編集された答えを見て、あなたが問題に直面している場所、またはあなたが理解できない行を教えてください。 –

+0

私のプロジェクトで私のサーバー側はPHPのpython.soではなく、変更は何をしなければなりませんか? – Shivaay

4

...

NSMutableURLRequest *mutableRequest = [[NSMutableURLRequest alloc] initWithURL:@"you url"]; 

[mutableRequest addValue:@"image/jpeg" forHTTPHeaderField: @"Content-Type"]; 

NSMutableData *body = [NSMutableData data]; 

[body appendData:[NSData dataWithData:UIImageJPEGRepresentation(self.image, 0.9)]]; 

[mutableRequest setHTTPBody:body]; 

NSURLResponse *response; 
NSError *error; 

(void) [NSURLConnection sendSynchronousRequest:mutableRequest returningResponse:&response error:&error]; 

おかげでも、サーバー側のPHPコードなどのiOS側のコードを見つけることが、あなたができるチュートリアル

良いtutorial.In以下
+0

ありがとう。しかし、どのような方法でこれらのコード行を追加するhavです。 – Shivaay

+0

あなたはどんな方法を意味するのかよく分かりませんか?それはあなたのプログラムをどのように書いたかによってまったく異なります。ある時点で、「uploadImage」などと呼ばれるメソッドがあります。これはあなたがそのイメージをアップロードする方法です。 – Fogmeister

+0

tnx ..私はiOS.soに新しいので、あなたにそのような質問をしました。それほど多くのアイデアを持っていません.. – Shivaay

2
+0

tnx ..しかし、私は投稿用のURLしか持っていないので、サーバ側を知る必要があります。 .no、server side info .. – Shivaay

+0

彼が実装していることをサーバーサイドの開発者に聞いても、彼のコードを検証するためのhtmlフォームを与えるように頼んでください。あなたの悪夢を引き起こす可能性があります:) –

+0

はい..tnxたくさん..san – Shivaay

関連する問題