S3直接存储桶上传:成功但文件不存在

时间:2015-06-09 19:35:11

标签: amazon-web-services file-upload amazon-s3

我正在使用多部分表单上传和签名策略(使用AWS签名版本2)将文件直接上传到S3存储桶,如herehere所述。

上传成功(我被重定向到success_action_redirect网址)但该文件在存储桶中不可见,应该是密钥。虽然上传文件的ACL设置为public-read,但我认为这可能是一个权限问题,但即使是存储桶的所有者也看不到该文件。

有人暗示可能是错的吗?

谢谢。

1 个答案:

答案 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>

另见Upload examples docs