我在 S3 中有 PDF、图像和文本文件。我希望能够创建文件的下载链接,但只是有时。有时我的用户想在网络上查看文件,但有时他们想单击"下载"按钮以一步抓取它们(而不是打开它们并单击 PDF 查看器中的磁盘图标或按 CTRL + S 等(。对于后一种情况,我希望能够生成一个链接,告诉 S3 该怎么做。如果我也可以控制附件的名称,那就太好了,但是我很乐意能够制作附件。
脚注
我知道您可以提前将此类标头添加到您的文件中,但这消除了我在事后选择"下载"或"在线查看"的能力。
您可以通过传递额外的参数response-content-disposition=attachment; filename='mycustomFileName'
,根据 URL 动态地将标头添加到响应中,如 s3 获取 Obejct 文档中所述。
但是,这仅适用于经过身份验证(有时间限制(的 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>
如果您希望此功能适用于未经身份验证的用户,则下载标记可能是一个选项。如本例所述,您可以指定用户友好的文件名而不是哈希:
<a href="/images/490/736d910771bc3ee2.jpeg" download="some_nice_image_name.jpg">
尽管这显然有助于抓取工具自动注释您的内容。