S3 прямая загрузка ограничения размера и типа файла
Вопрос с новичком, но у меня есть googled abit и не может найти никакого решения.
Я хочу разрешить пользователям напрямую загружать файлы на S3, а не через мой сервер. Таким образом, есть ли способ проверить файлы на ограничение размера и разрешенные типы перед фактической загрузкой на S3? Предпочтительно не использовать flash, а javascript.
Ответы
Ответ 1
Если вы говорите о проблеме безопасности (люди загружают огромный файл в ваше ведро), да, вы можете ограничить размер файла при загрузке на основе браузера на S3.
Вот пример переменной "policy", где ключевой точкой является "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]
]
В этом случае, если размер файла uplaoding > 10mb, запрос на загрузку будет отклонен Amazon.
Конечно, перед запуском процесса загрузки вы должны использовать javascript, чтобы проверить размер файла и сделать некоторые предупреждения, если это произойдет.
получение размера файла в javascript
Ответ 2
AWS написал учебник, объясняющий, как создавать формы HTML POST, которые позволяют посетителям вашего веб-сайта загружать файлы в вашу учетную запись S3 с помощью стандартного веб-браузера. Он использует S3 предварительно подписанные URL-адреса для предотвращения несанкционированного доступа, и вы можете ограничить доступ по размеру файла.
Ответ 3
Чтобы сделать то, что вы хотите сделать, вам нужно будет загрузить через свой собственный веб-сервис. Это, вероятно, лучше всего, так как предоставление глобального доступа для записи вашим конечным пользователям к вашему ведро S3 - кошмар безопасности, не говоря уже о том, что не будет ничего, что помешает им загружать огромные файлы и поднимать ваши расходы.