一个新手问题,但我已经用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策略文档已签名,因此任何篡改都会导致请求失败。 –