我正在使用多部分表单上传和签名策略(使用AWS签名版本2)将文件直接上传到S3存储桶,如here和here所述。
上传成功(我被重定向到success_action_redirect网址)但该文件在存储桶中不可见,应该是密钥。虽然上传文件的ACL设置为public-read
,但我认为这可能是一个权限问题,但即使是存储桶的所有者也看不到该文件。
有人暗示可能是错的吗?
谢谢。
答案 0 :(得分:3)
事实证明,我需要做的就是确保上传的文件名包含在上传到S3的key
中。
如果你有这样的表格:
<form action="http://johnsmith.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
<input type="input" name="key" value="user/eric/" /><br />
(...)
</form>
然后该文件将上传到user/eric
。绊倒我的是这样定义的键是一个现有的S3文件夹。 AWS似乎上传成功,但可能只是删除了上传的文件,因为密钥已经存在。解决方案是在密钥中包含文件名:
<form action="http://johnsmith.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
<input type="input" name="key" value="user/eric/${filename}" /><br />
(...)
</form>