一個新手問題,但我已經用Google搜索,似乎無法找到任何解決方案。s3直接上傳限制文件大小和類型
我想讓用戶直接上傳文件到S3,而不是先通過我的服務器。通過這樣做,在實際上傳到S3之前,是否有任何方法可以檢查文件的大小限制和允許的類型?最好不要使用Flash而是使用JavaScript。
一個新手問題,但我已經用Google搜索,似乎無法找到任何解決方案。s3直接上傳限制文件大小和類型
我想讓用戶直接上傳文件到S3,而不是先通過我的服務器。通過這樣做,在實際上傳到S3之前,是否有任何方法可以檢查文件的大小限制和允許的類型?最好不要使用Flash而是使用JavaScript。
如果您在談論安全問題(人們將大文件上傳到您的存儲桶中),那麼您可以通過基於瀏覽器的上傳到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來檢查文件大小並在出現的情況下發出警報。
要做你想做的事情,你需要通過你自己的網絡服務上傳。無論如何,這可能是最好的,因爲向您的S3存儲區提供對您的最終用戶的全球寫入訪問權限是一個安全噩夢,不要提及不會阻止他們上傳大量文件並擡高費用。
AWS寫了一個教程講解如何create HTML POST forms that allow your web site visitors to upload files into your S3 account using a standard web browser。它使用S3預先簽名的URL來防止篡改,並且可以按文件大小限制訪問。
有關如何應用此策略的更多詳細信息以及其他注意事項,請參閱https://aws.amazon.com/articles/1434。 – Trenton
該政策是在客戶端設置的表單的一部分。如果黑客足夠敏銳,他們可以解碼base64策略,並將任何文件大小或類型放入其中。 – Kareem
@Kareem策略文檔已簽名,因此任何篡改都會導致請求失敗。 –