file - 我可以创建一个带有内容处置 : attachment? 的一次性 S3 链接吗

标签 file amazon-s3 browser download content-disposition

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

脚注

我知道您可以提前将此类 header 添加到您的文件中,但这使我无法在事后选择“下载”或“在线查看”。

最佳答案

您可以dynamically add headers to response基于 URL,通过传递额外参数 response-content-disposition=attachment; filename='mycustomFileName's3 Get Obejct docs 中所述.

但是,这只适用于 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">

尽管这显然有助于抓取工具自动注释您的内容。

关于file - 我可以创建一个带有内容处置 : attachment? 的一次性 S3 链接吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51922601/

相关文章:

javascript - S3 直接上传 + Rails + Dropzone.js

c - C语言对字符串和文件的快速排序

python - 按多列对文本文件进行排序

php - 使用 PHP SDK 列出 AWS S3 存储桶

apache-spark - hadoop aws 版本兼容性

html - 如果图像的 src 和 div 的背景图像中都使用了图像,浏览器会下载图像两次吗?

python - Selenium Webdriver - PhantomJS 卡在 send_keys() 上以文件输入元素

逐 block 读取/打印文件的 Linux shell 命令

java - 如何读取大文件中的第二列

javascript - 不在浏览器历史记录中显示页面