3

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 が変更されるとは思わないので、これをトリガーの機能内で機能させるためのオプションはありますか?

4

1 に答える 1

3

これはトリガー アップロード コードの単なるバグのようです。これを修正するリクエスト モジュールの更新バージョン (バージョン 2.2) を公開しました。

あなたの問題の詳細な説明をありがとう。

于 2013-09-04T14:45:03.397 に答える