s3直接上传限制文件大小和类型

twb*_*twb 23 php file-type filesize amazon-s3

一个新手问题,但我google了abit,似乎无法找到任何解决方案.

我想允许用户直接将文件上传到S3,而不是先通过我的服务器.通过这样做,有没有什么方法可以在实际上传到S3之前检查文件的大小限制和允许的类型?最好不要使用flash而是使用javascript.

sto*_*yau 53

如果您正在谈论安全问题(人们将大量文件上传到您的存储桶中),是的,您可以通过基于浏览器的上传到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]
]
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果上传文件大小> 10mb,亚马逊将拒绝上传请求.

当然,在开始上传过程之前,您应该使用javascript检查文件大小并发出一些警报.

在javascript中获取文件大小

  • @Kareem策略文档已签名,因此任何篡改都将导致请求失败. (4认同)
  • 有关如何应用策略的更多详细信息以及其他注意事项,请参阅https://aws.amazon.com/articles/1434. (2认同)

Tre*_*ton 7

AWS 编写了一个教程,解释如何创建 HTML POST 表单,使您的网站访问者可以使用标准 Web 浏览器将文件上传到您的 S3 帐户。它使用 S3 预签名 URL 来防止篡改,并且您可以按文件大小限制访问。