我可以创建一个带内容处理的一次性S3链接:附件吗?

Joh*_*y 5 5 browser file download amazon-s3 content-disposition

我在S3中有PDF,图像和文本文件.我希望能够创建文件的下载链接,但有时只是.有时我的用户想要在网络上查看文件,但有时他们想要点击"下载"按钮一步抓住它们(打开它们并点击PDF查看器中的磁盘图标或点击CTRL + S等. ).对于后一种情况,我希望能够生成一个告诉S3该做什么的链接.如果我还可以控制附件的名称,那就太好了,但我很高兴能够制作附件.

脚注

我知道您可以提前将这些标题添加到您的文件中,但这使我无法在事后选择"下载"或"在线查看".

isp*_*zax 5

您可以通过传递s3 Get Obejct文档中描述的额外参数,根据URL 动态添加标题.response-content-disposition=attachment; filename='mycustomFileName'

但是,这仅适用于经过身份验证(限时)的URL,否则,用户将收到InvalidRequest类似于以下内容的错误:

<Error>
<Code>InvalidRequest</Code>
<Message>
Request specific response headers cannot be used for anonymous GET requests.
</Message>
<RequestId>C5066C8E8F647EA2</RequestId>
<HostId>
ik5oj4QfcJX+5+F/PdootFuq47bh6hLpDqhbeyWlw+AADvMPpOPio6eYwXW7Fnx+H/zpVBM7DbA=
</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)

如果您希望这与未经过身份验证的用户一起使用,则可以选择下载标记.如本例所述,您可以指定用户友好的文件名而不是哈希:

<a href="/images/490/736d910771bc3ee2.jpeg" download="some_nice_image_name.jpg">
Run Code Online (Sandbox Code Playgroud)

虽然这显然有助于刮刀自动注释您的内容.