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

时间:2012-11-15 01:38:57

标签: php amazon-s3 filesize file-type

一个新手问题,但我用google搜索abit,似乎无法找到任何解决方案。

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

3 个答案:

答案 0 :(得分:48)

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

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

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

getting file size in javascript

答案 1 :(得分:4)

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来防止篡改,您可以按文件大小限制访问。

答案 2 :(得分:-6)

要执行您想要执行的操作,您需要通过自己的网络服务上传。无论如何,这可能是最好的,因为向最终用户提供对S3存储桶的全局写入访问是一个安全噩梦,不用太多提及没有什么能阻止他们上传大文件并抬高你的费用。