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も受け入れるスクリプトを作成できないため)...
手順は次のとおりです。
- UIImage...Representation で圧縮表現を作成する
- 1 からの出力を Base64 エンコードする
- 2 からの出力を URL エンコードする
- URL 文字列に追加
- 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/