【问题标题】:S3 Upload Where KEY != FILENAME (aws)S3 上传 KEY != FILENAME (aws)
【发布时间】:2014-09-29 00:29:48
【问题描述】:

我想使用唯一标识符作为我的 amazon s3 密钥,但仍然能够以原始文件名下载文件。

例如,我正在使用预签名的 POST 上传文件。所以假设我正在使用这个 curl 字符串发布:

"curl -s -ss -X POST -i \
    -F \"key=my_files/1.format\" \
    -F \"AWSAccessKeyId=" + my_AWSAccessKeyId + "\" \
    -F \"Policy=" + my_policy + "\" \
    -F \"Signature=" + my_signature + "\" \
    -F \"file=@my_picture.jpg\" \
    https://my_bucket.s3.amazonaws.com/"

所以我有这个任意文件,“1.format”,但它实际上应该是 my_picture.jpg。当我尝试从https://my_bucket.s3.amazonaws.com/my_files/1.format 下载时,我下载的是 1.format 文件,而不是 my_picture.jpg。

我知道设置 Content-Disposition 可能是正确的解决方案,但我无法弄清楚如何正确使用 curl。

【问题讨论】:

  • Content-Disposition 需要设置在服务器端,不要以为你可以让 curl 这样做,它是一个响应头

标签: bash curl amazon-web-services amazon-s3


【解决方案1】:

您应该能够在 POST 请求中设置 Content-Disposition 标头,该标头将用于 S3 响应。只需将-H "Content-Disposition:whatever" 添加到curl 通话即可。

另一个选项是在键名中使用/,并将尾随部分设置为原始文件名。例如。 uuid/filename.jpeg

【讨论】:

  • 当我尝试设置 -H "Content-Disposition=attachment;filename=RANDOMNAME.jpg" 时,当我尝试下载时它实际上并没有将文件保存为 RANDOMNAME.jpg。相反,它只使用键名:1.format.
猜你喜欢
  • 2012-11-07
  • 1970-01-01
  • 2018-07-12
  • 2019-09-09
  • 2017-04-12
  • 2015-01-10
  • 2014-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多