-7

以下のコードからリモートサーバーに画像を送信する方法 最後の文字列は画像とともに配置されます

NSString *reqString=[NSString stringWithFormat:@"http://projeceads.info/spir/productinfo/productadd/%@/%@/%@/%@/%@/%@/%@/%@",ownerId ,productNameTxt.text,QuantityTxt.text,sizeTxt.text,ageTxt.text,priceTxt.text,descriptionView.text,imgstr]; NSURL *reqUrl=[NSURL URLWithString:reqString]; NSURLConnection *connection=[[NSURLConnection alloc]initWithRequest:[NSURLRequest requestWithURL:reqUrl] delegate:self];
[接続開始]; }

4

2 に答える 2

3

Web サーバーにデータをアップロードするには、GET または POST の 2 つの方法があります。

GET では、Web サーバーに持たせたいすべての情報を URL に入れる必要があります。POST を使用すると、さらに情報を POST 本文に入れることができます。

あなたの質問から、GETリクエストを介して画像をアップロードし、「画像をURLに追加」しようとしているようです。

画像自体はバイナリ データであり、RGBA 値として圧縮されていないか、通常は幅 x 高さのそれぞれに 1 バイトです。これはほとんどの用途にはデータが多すぎるため、人々は画像を圧縮することを好みます。UIImagePNGRepresentation を使用すると、PNG または JPEG 形式でデータを作成できます。

ただし、Web サーバーがバイナリ データを処理できない場合、この圧縮形式でも HTTP 経由で転送できない場合があります。それ自体が純粋なテキスト形式である HTTP では、0 ~ 255 のすべての値を使用できないためです。歴史的に、HTTP は安全に送信できる 7 ビットの ASCII 文字 (0 ~ 127) のみを使用していました。このため、どこかに送信するバイナリ データは、安全な文字のみを使用する表現にエンコードする必要があります。このようなエンコーディング方式で最も一般的なのは「base64」です。

base64 エンコーディングの欠点の 1 つは、送信する必要のあるデータ量が約 3 分の 1 増加することです。また、ほとんどの最新の Web サーバーは実際にバイナリ投稿データを受信できます。

TwitPic に POST で画像をアップロードする方法をここに書きました。ここに示すように、正しいヘッダーをまとめて POST 本文を構成する必要があります: http://www.cocoanetics.com/2010/02/uploading-uiimages-to-twitpic/

Web サーバーがサポートしている場合は、この方法で画像をアップロードすることをお勧めします。これはあなたが探している答えではありませんが、取るべきアプローチです。

「画像の表現を含むURLを作成するにはどうすればよいですか」という質問に実際に答えるために(サーバー管理者が愚かすぎて、POSTも受け入れるスクリプトを作成できないため)...

手順は次のとおりです。

  1. UIImage...Representation で圧縮表現を作成する
  2. 1 からの出力を Base64 エンコードする
  3. 2 からの出力を URL エンコードする
  4. URL 文字列に追加
  5. GETリクエストを送る

base64 エンコーディングには、有名な Matt Gallagher によって作成されたメソッドを使用します: https://github.com/Cocoanetics/DTFoundation/blob/master/Core/Source/NSData%2BBase64.h

URL エンコードが必要なのは、整形式の URL で使用できる文字が 7 ビット HTTP よりもさらに少ないためです。URL エンコーディングには、この NSString カテゴリを使用します。https://github.com/Cocoanetics/DTFoundation/blob/master/Core/Source/NSString%2BDTURLEncoding.h

要約すると、GET URL 経由で画像を送信しないことは可能ですが。通常の人と同じように POST リクエストとして送信し、画像データをバイナリ形式または base64 エンコード形式で POST 本文に入れます。

PS:私がここに投稿したこの回答のより編集されたバージョン:http://www.cocoanetics.com/2013/01/how-to-send-image-to-remote-server/

于 2013-01-11T07:00:00.983 に答える
0

NSData を送信する必要があります

NSData *attachmentData = UIImagePNGRepresentation(UIImage);

これは良い質問ではありません。それに関連する多くの投稿を見つけることができます。質問を投稿する前に、まず Google で検索してみてください。

http://allseeing-i.com/ASIHTTPRequest/How-to-use

于 2013-01-11T06:17:24.467 に答える