2012-12-20 40 views
3

我使用YUI Uploader嘗試直接上傳到S3。 HTML5版本可以正常工作,但是當我回退到Flash時,它失敗了。 S3被踢回錯誤:使用Flash上​​傳到S3不起作用

<Message>Invalid according to Policy: Extra input fields: filename</Message> 

但我的政策的文檔看起來是這樣的:

{"expiration": "2012-12-20T11:05:43Z", "conditions": [ 
    {"Content-Disposition": "attachment" }, 
    ["eq", "$success_action_status", "201"], 
    {"bucket": "my-bucket" }, 
    ["starts-with", "$Filename", ""], 
    ["starts-with", "$key", ""], 
    {"acl": "public-read" }]} 

正如你所看到的,我已經得到了「$文件名」中就有了。我不明白爲什麼S3不接受請求。 (「我的桶」只是一個佔位符,而不是桶的真實名稱)。

我做了測試後到本地端點,並使用POST看起來是這樣的:

------------GI3ae0cH2gL6Ij5gL6GI3Ef1Ij5GI3 
Content-Disposition: form-data; name="Filename" 

test.gif 
------------GI3ae0cH2gL6Ij5gL6GI3Ef1Ij5GI3 
Content-Disposition: form-data; name="AWSAccessKeyId" 

<access key> 
------------GI3ae0cH2gL6Ij5gL6GI3Ef1Ij5GI3 
Content-Disposition: form-data; name="key" 

uploads/1f9ba441-49c6-4c5-aa22-c2ea21335218.jpg 
------------GI3ae0cH2gL6Ij5gL6GI3Ef1Ij5GI3 
Content-Disposition: form-data; name="signature" 

jEc1kK72mwBoqHKfo+J31UFUv+E= 
------------GI3ae0cH2gL6Ij5gL6GI3Ef1Ij5GI3 
Content-Disposition: form-data; name="policy" 

eyJleHBpcmF0aW9uIjogIjIwMTItMTItMjBUMTE6MTg6MDNaIiwgImNvbmRpdGlvbnMiOiBbeyJidWNrZXQiOiAid2FwdS1ncmVnLWRldiIgfSwgWyJzdGFydHMtd2l0aCIsICIka2V5IiwgIiJdLCB7ImFjbCI6ICJwdWJsaWMtcmVhZCIgfV19 
------------GI3ae0cH2gL6Ij5gL6GI3Ef1Ij5GI3 
Content-Disposition: form-data; name="acl" 

public-read 
------------GI3ae0cH2gL6Ij5gL6GI3Ef1Ij5GI3 
Content-Disposition: form-data; name="file"; filename="test.gif" 
Content-Type: application/octet-stream 

<file content removed for brevity> 

------------GI3ae0cH2gL6Ij5gL6GI3Ef1Ij5GI3 
Content-Disposition: form-data; name="Upload" 

Submit Query 
------------GI3ae0cH2gL6Ij5gL6GI3Ef1Ij5GI3--   

回答

1

這是我的失誤,並沒有傳遞正確的簽名