我在S3中有PDF,图像和文本文件。我希望能够创建指向该文件的下载链接,但仅在某些时候。有时,我的用户想要在Web上查看文件,但是有时,他们想要单击“下载”按钮以单步进行抓取(与打开它们并在PDF查看器中单击磁盘图标,或者按CTRL + S等)。 )。对于后一种情况,我希望能够生成一个链接来告诉S3该做什么。如果我还可以控制附件的名称,那就太好了,但是我很高兴能够制作附件。
我知道您可以提前将此类标头添加到文件中,但这使我无法在事后选择“下载”或“在线查看”。
答案 0 :(得分:5)
您可以根据URL dynamically add headers to response,如s3 Get Obejct docs中所述,通过传递额外的参数response-content-disposition=attachment; filename='mycustomFileName'
。
但是,这仅适用于authenticated (time limited) URLS,否则,用户将收到类似于以下内容的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>
如果您希望它与未经身份验证的用户一起使用,则可以选择download tag。如this example中所述,您可以指定用户友好的文件名而不是哈希:
<a href="/images/490/736d910771bc3ee2.jpeg" download="some_nice_image_name.jpg">
尽管可以明显帮助刮板自动注释您的内容。