モバイル アプリケーションでサーバーに画像をアップロードできるようにしたいのですが、私の場合はnginxを使用したRails 3.2.11です。
クライアント側でのBase64エンコーディングとサーバー側でのデコードについてよく読んでいます。
http 要求でマルチパートヘッダーを使用してバイナリアップロードを使用しないのはなぜですか?
各テクニックの長所/短所はありますか?
モバイル アプリケーションでサーバーに画像をアップロードできるようにしたいのですが、私の場合はnginxを使用したRails 3.2.11です。
クライアント側でのBase64エンコーディングとサーバー側でのデコードについてよく読んでいます。
http 要求でマルチパートヘッダーを使用してバイナリアップロードを使用しないのはなぜですか?
各テクニックの長所/短所はありますか?
Base64 は、データをバイナリ データの ASCII 表現に変換します。たとえば、JSON などのテキスト ストリームにデータを埋め込むことができます。Base64 では、転送されるデータのサイズが 33% 増加します。
multipart/form-data
HTTP リクエストでバイナリ データを転送する標準的な方法です。転送したい部分ごとに特定のエンコーディング / コンテンツ タイプを使用できます。私の意見では、特定の要件やデバイス/SDK 機能がない限り、マルチパート アップロードに固執する必要があります。
「http 要求でマルチパート ヘッダーを使用したバイナリ アップロードを使用しないのはなぜですか?」確かになぜではない;)
Base64 画像表現を html 内に直接配置して、画像をレンダリングできます。
バイナリはより少ないスペースを占有します。そして、より大きなネットワーク効果と標準化の恩恵を受けます。たとえば、Amazon Simple Secure Storage S3 を使用する場合は、バイナリ ファイルを保存する必要があります。キー/値ストア (redis など) が必要な文字列を格納することはできません。