S3 の直接アップロード サポート ( http://aws.amazon.com/articles/1434 )を使用して、Trigger のファイルおよびカメラ モジュールから S3 にカメラ メディアをアップロードしようとしています。これはネイティブ Web で問題なく動作しますが、トリガーで同じリクエストを複製すると、S3 の「MaxPostPreDataLengthExceeded」例外が発生します。
生のリクエストを調べたところ、1 つの微妙な違いがトリガーの失敗を引き起こしているようです。
Webkit からの生の POST データは次のとおりです。
------WebKitFormBoundaryCl5fCuacIKQjcEfA
Content-Disposition: form-data; name="key"
uploads/2013-08-29/upload.jpeg
------WebKitFormBoundaryCl5fCuacIKQjcEfA
Content-Disposition: form-data; name="AWSAccessKeyId"
...
------WebKitFormBoundaryCl5fCuacIKQjcEfA
Content-Disposition: form-data; name="success_action_status"
201
------WebKitFormBoundaryCl5fCuacIKQjcEfA
Content-Disposition: form-data; name="file"; filename="file.jpg"
Content-Type: image/jpeg
????JFIF??XExifMM?i&??...
そして、ここからforge.request.ajax({data: ..., files: [(file object)]})
です:
--2268A38A1BB344B5BBEE83586818388A
Content-Disposition: form-data; name="key"
uploads/2013-08-30/upload.jpeg
--2268A38A1BB344B5BBEE83586818388A
Content-Disposition: form-data; name="AWSAccessKeyId"
...
--2268A38A1BB344B5BBEE83586818388A
Content-Disposition: form-data; name="success_action_status"
201
--2268A38A1BB344B5BBEE83586818388A
Content-Disposition: file; name="file"; filename="file.jpg"
Content-Type: image/jpg
????JFIF??XExifMM?i&??...
(唯一の) 違いは、FormData フィールドを使用する Webkit では、ファイルにform-data
コンテンツの性質があることです。トリガーでは、ファイルにはfile
コンテンツの性質があります。これにより、S3 はファイルのバイナリ コンテンツをフォームの一部として登録します。したがって、MaxPostPreDataLengthExceeded
例外と 400 Bad Request 応答が発生します。
この違いには理由がありますか?ドキュメントには、これらのファイルの Content-Disposition をカスタマイズする方法はありません。そのような方法はありますか?この機能を自分で構築する必要がありますか? S3 が変更されるとは思わないので、これをトリガーの機能内で機能させるためのオプションはありますか?