【发布时间】:2015-09-24 09:26:29
【问题描述】:
我已将基于服务器的 s3 上传移动到从浏览器直接上传到 s3,我正在设置上传策略,但有些过期。
$policy = array(
'expiration' => gmdate('Y-m-d\TG:i:s\Z', strtotime('+10 minutes')),
'conditions' => array(
array('bucket' => Configure::Read('s3upload.s3bucket')),
array('acl' => 'private'),
array('starts-with', '$key', ''),
array('success_action_redirect' => $success_action_redirect),
array('starts-with', '$Content-Type', ''),
array("content-length-range", 0, 16*1024*1024) //16 mb
)
);
我需要在表单数据中传递 AWSAccessKey、编码策略、签名,这可能会影响虚假上传(我对此也有疑问)。
为了避免被利用,我应该设置最短过期时间?但作为客户端,无法确定文件大小和连接速度。
我已经尝试过 10 秒过期和大文件上传来验证,我观察到所有上传尝试都出现策略过期错误,
<Error> <Code>AccessDenied</Code> <Message>Invalid according to Policy: Policy expired.</Message> <RequestId>2178D49CAA739EB3</RequestId> <HostId>id=</HostId> </Error>
但由于我的 WI-FI 连接经常断开,所以我无法确定正确的行为,但通过稳定的局域网连接,我可以上传具有较小策略到期时间的大文件。
我应该如何确定保单到期的正确到期值?
【问题讨论】:
标签: file-upload amazon-s3