2013-08-30 75 views
3

我試圖使用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的功能中工作?

+0

Gabe,你應該分享你的代碼嗎?我仍然有這個相同的問題,並得到通過它。我有相同的問題 –

回答

3

看起來這只是Trigger上傳代碼中的一個錯誤,我剛剛發佈了修復此問題的請求模塊(版本2.2)的更新版本。

感謝您對這個問題的詳細描述。

+1

這仍然不適合我使用請求模塊版本2.4。有人可能會共享一些工作代碼嗎? @加布-S? –