私のブラウザがWebサイトから画像をダウンロードすると、base64エンコーディングは必要ありません。 GET /image.jpg
のようなHTTPコマンドを発行し、そのContent-Type
がimage/jpg
のようなHTTP応答を受け取り、Content-Length
が画像のバイト数であり、その本文が生のバイナリ画像データそのものであるHTTP応答を受信します。データは文字セットを使用してエンコードされず、base64のようなスキームを使用してエンコードされません。 RESTfulなリソースを書くWebkit JavaScriptは純粋なバイナリとしてイメージをREST形式でPUTまたはPOSTできますか?
はHTTP GET
とPUT
間の対称性を期待する私を訓練したように、例えば、私はそれはPUT
で提示されたときGET
はその後、JSONデータを受け入れる行うときにJSONデータを配信するURL。いずれの場合もフォームエンコーディングは関係ありません。どちらの場合も、ペイロードにバイト数を与えるContent-Length
があり、Content-Type
ヘッダーは、ペイロードが一部の文字セットでJSONであることを宣言してから、文字データは単独で、GET
またはPUT
の本体として単独で座っています。
私は、ユーザーが写真を撮って自分のアプリケーションを使用してアップロードできるPhoneGapアプリケーションを作成しています。私は、対称型のGET
とPUT
をサポートするRESTfulインターフェイスを設計できると期待していたので、PUT
コマンドには特別なエンコーディングが含まれていません。文字セットのアイデアはありません。Content-Type
がimage/jpg
で、バイナリJPGデータをペイロードとして使用します。明らかに、これは、フォームの内部でイメージをエンコードしようとするよりも、帯域幅をより効率的に使用することです。 curl
のようなツールを使用してURLにPUT
を追加すると、このアプローチはうまくいきます。
しかし、私はPhoneGap WebKit JavaScriptからきれいなRESTful PUT
を行うことに運がないです! PhoneGapは、JavaScriptをローカルのfile:
URL、またはdata:
のURLとして返信します。このURLは、画像データをbase64エンコーディングのインラインで表示します。しかし、どちらの場合も、イメージを純粋なバイナリ形式に変換する明確な方法はありません(私は、これらの新機能のあるBlob
オブジェクトを使用しますか?その場合はどうすればよいでしょうか)。そして、PUT
余分なフォームやエンコードクラフトのレイヤーは、生のイメージをHTTPリクエストペイロードとしてWebサーバーに送信します。
WebKitをPUT
に誘導する方法を知っている人は、生のイメージを本体としてAJAXリクエストをしていますか?私はこのすべてに間違っていると指摘しています。
似たような質問ですが、あなたが望む答えはありません(ただし、他の答えはありません):http://stackoverflow.com/questions/3743047/uploading-a-binary-string-in-webkit- chrome-using-xhr-equivalent-to-firefoxs-se – Thilo