Вопрос новичков, но у меня есть googled abit и не может найти никакого решения.
Я хочу разрешить пользователям напрямую загружать файлы на S3, а не через мой сервер. Таким образом, есть ли способ проверить файлы на ограничение размера и разрешенные типы перед фактической загрузкой на S3? Предпочтительно не использовать flash, а javascript.
Если вы говорите о проблеме безопасности (люди загружают огромный файл в ваше ведро), да, вы можете ограничить размер файла при загрузке через браузер на S3.
Ниже приведен пример переменной «policy», где ключевым моментом является «content-length-range».
"expiration": "'.date('Ymd\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
AWS написал учебное пособие, в котором объясняется, как создавать формы HTML POST, которые позволяют посетителям вашего веб-сайта загружать файлы в вашу учетную запись S3 с помощью стандартного веб-браузера . Он использует S3 предварительно подписанные URL-адреса для предотвращения несанкционированного доступа, и вы можете ограничить доступ по размеру файла.
Чтобы сделать то, что вы хотите сделать, вам нужно будет загрузить через свой собственный веб-сервис. Это, вероятно, так или иначе, так как предоставление глобального доступа на запись вашим конечным пользователям к вашему ведро S3 – кошмар безопасности, не говоря уже о том, что не будет ничего, что помешает им загружать огромные файлы и поднять ваши расходы.