我正在构建一个Web应用程序,可以使用AWS for Browsers SDK将文件直接上传到公共S3存储桶。
我想限制可上传的最大文件大小,虽然我可以对文件大小进行客户端验证,但纯客户端解决方案不是很强大,我想添加一个服务器端验证也是如此。是否可以使用IAM角色为“S3:PutObject”操作执行此操作?
答案 0 :(得分:2)
您可以使用上传表单中的content-length-range属性限制上传的对象大小。
以下是相关文档页面:http://doc.s3.amazonaws.com/proposals/post.html#Limiting_Uploaded_Content
答案 1 :(得分:2)
您可以在设置签名上传URK以便直接浏览器上传到S3时,在您创建的s3Policy中设置最小和最大文件大小。
以下是一个示例(来自node.js app的JavaScript) - 请参阅底部的“content-length-range”部分:
var s3Policy = {
'expiration': expiration,
'conditions': [{
'bucket': aws.bucket
},
['starts-with', '$key', path],
{
'acl': readType
},
{
'success_action_status': '201'
},
['starts-with', '$Content-Type', request.type],
['content-length-range', 2048, 124857600], //min and max
]
};
如果用户上传的文件超过S3,则返回400错误请求,其中包含一条消息,指出已超出最大文件大小限制。