我試圖使用S3的直接上傳支持(http://aws.amazon.com/articles/1434)將相機媒體從Trigger的文件和相機模塊上傳到S3。我已經得到了與本地網絡的工作很好,但當我在Trigger中複製相同的請求時,我得到了S3的「MaxPostPreDataLengthExceeded」異常。亞馬遜S3通過forge.request.ajax直接上傳
我看過原始請求,它看起來像一個微妙的差異導致觸發失敗。
這裏的原始POST數據從WebKit的未來:
------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&??...
的(唯一的)不同的是,在WebKit的使用FORMDATA領域,文件都form-data
內容配置。在觸發器中,文件具有file
內容處置。這導致S3將文件二進制內容註冊爲表單的一部分;因此有MaxPostPreDataLengthExceeded
異常和400錯誤請求響應。
是否有這種差異的原因?我沒有在文檔中看到爲這些文件定製Content-Disposition的方法。有沒有這樣的方式?我是否需要自己構建這個功能?我沒有看到S3的改變,所以有什麼選擇讓它在Trigger的功能中工作?
Gabe,你應該分享你的代碼嗎?我仍然有這個相同的問題,並得到通過它。我有相同的問題 –