Подтвердить что ты не робот

S3 прямая загрузка ограничения размера и типа файла

Вопрос с новичком, но у меня есть googled abit и не может найти никакого решения.

Я хочу разрешить пользователям напрямую загружать файлы на S3, а не через мой сервер. Таким образом, есть ли способ проверить файлы на ограничение размера и разрешенные типы перед фактической загрузкой на S3? Предпочтительно не использовать flash, а javascript.

4b9b3361

Ответ 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 - кошмар безопасности, не говоря уже о том, что не будет ничего, что помешает им загружать огромные файлы и поднимать ваши расходы.