2013-03-05 135 views
1

我想上傳從瀏覽器的文件到S3亞馬遜,我已經修改了CORS策略規則允許後挖鬥,但我得到的錯誤直接上傳到Amazon S3使用AJAX

<?xml version="1.0" encoding="UTF-8"?> 
    <Error><Code>InvalidArgument</Code><Message>Bucket POST must contain a field named 'key'. If it is specified, please check the order of the fields.</Message> 
<ArgumentValue></ArgumentValue><ArgumentName>key</ArgumentName><RequestId>1E0A8DC78C0CEA9A</RequestId><HostId>XN38Qje9hUrGqHNIhtT8CtowX9tXlpyfEoaXb1UNxlsyLOWreh2mKqKVXg1zjLVl</HostId></Error> 

這是我的請求和響應,我傳遞關鍵參數以正確的順序通過仍然收到此錯誤

http://screencast.com/t/9ZUQO0s9d

http://screencast.com/t/CL8MKq6l6

任何人都可以告訴我什麼是錯的,我使用FormData提交請求

任何幫助將不勝感激。

感謝

編輯:這裏是代碼請查

var form_data = new FormData();   
       form_data.append('file',hdlr.file); 
       //form_data.append('crop_type',settings.get_cropped_type()); 
       //form_data.append('attributes',JSON.stringify(file_attr)); 
       $('input:hidden',$form).each(function(){ 

        form_data.append(this.name,this.value); 

       }); 


       //finally post the file through AJAX 
       var xhr = new XMLHttpRequest(); 
       xhr.open("POST", $form[0].action, true); 
       xhr.send(form_data); 

enter image description here

+0

在此屏幕截圖(screencast.com/t/9ZUQO0s9d)中,密鑰的值爲myfiles/$ {filename}。這是預期的嗎? – 2013-03-05 21:35:47

+1

amazon s3發佈允許myfiles/$ {文件名}爲未知的文件名 – MZH 2013-03-05 21:39:59

+0

請張貼您的HTML和JS代碼。 – 2013-03-06 02:22:41

回答

17

它看起來像你的文件,表單域首先出現在請求中。我無法確定,因爲您沒有在您的答案中包含整個請求負載,但看起來這是出現在「密鑰」字段上方。 AWS會在文件字段後忽略請求中的所有字段,因此所有其他字段必須出現在文件之前。

+0

你是100%正確,謝謝 – MZH 2013-03-06 05:18:04

+0

http://docs.aws.amazon.com/AmazonS3 /latest/API/sigv4-HTTPPOSTForms.html – Palisand 2017-12-17 04:32:44