2012-11-15 144 views
16

一個新手問題,但我已經用Google搜索,似乎無法找到任何解決方案。s3直接上傳限制文件大小和類型

我想讓用戶直接上傳文件到S3,而不是先通過我的服務器。通過這樣做,在實際上傳到S3之前,是否有任何方法可以檢查文件的大小限制和允許的類型?最好不要使用Flash而是使用JavaScript。

回答

36

如果您在談論安全問題(人們將大文件上傳到您的存儲桶中),那麼您可以通過基於瀏覽器的上傳到S3來限制文件大小。

以下是「策略」變量的示例,其中「content-length-range」是關鍵點。

"expiration": "'.date('Y-m-d\TG:i:s\Z', time()+10).'", 
"conditions": [ 
    {"bucket": "xxx"}, 
    {"acl": "public-read"}, 
    ["starts-with","xxx",""], 
    {"success_action_redirect": "xxx"}, 
    ["starts-with", "$Content-Type", "image/jpeg"], 
    ["content-length-range", 0, 10485760] 
] 

在這種情況下,如果上傳文件大小大於10mb,上傳請求將被Amazon拒絕。

當然,在開始上傳過程之前,您應該使用javascript來檢查文件大小並在出現的情況下發出警報。

getting file size in javascript

+2

有關如何應用此策略的更多詳細信息以及其他注意事項,請參閱https://aws.amazon.com/articles/1434。 – Trenton

+0

該政策是在客戶端設置的表單的一部分。如果黑客足夠敏銳,他們可以解碼base64策略,並將任何文件大小或類型放入其中。 – Kareem

+2

@Kareem策略文檔已簽名,因此任何篡改都會導致請求失敗。 –

-5

要做你想做的事情,你需要通過你自己的網絡服務上傳。無論如何,這可能是最好的,因爲向您的S3存儲區提供對您的最終用戶的全球寫入訪問權限是一個安全噩夢,不要提及不會阻止他們上傳大量文件並擡高費用。

相關問題