33

一个新手问题,但我用谷歌搜索了一下,似乎找不到任何解决方案。

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

4

3 回答 3

70

如果您正在谈论安全问题(人们将大文件上传到您的存储桶),是的,您可以通过基于浏览器的上传到 S3 来限制文件大小。

这是“策略”变量的示例,其中“内容长度范围”是关键点。

"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 检查文件大小,如果是,则发出一些警报。

在javascript中获取文件大小

于 2014-08-12T16:15:55.517 回答
5

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

于 2015-01-22T06:14:18.567 回答
-8

要做你想做的事,你需要通过你自己的网络服务上传。无论如何,这可能是最好的,因为为您的最终用户提供对 S3 存储桶的全局写入访问权限是一场安全噩梦,更不用说没有什么可以阻止他们上传大文件并增加您的费用。

于 2012-11-15T01:45:33.523 回答