1

我知道当使用 s3 时,带有内联内容配置的图像将显示在浏览器中,并且将下载带有附件内容配置的图像。我希望的是,直接加载时可以允许内联显示图像,但也可以有一个下载链接,如果单击它会导致它被下载。更具体地说,如果我在 S3 中有一个具有以下设置的 jpeg 图像:

Content-Disposition     attachment
SystContent-Type        image/jpeg

然后它会在直接加载时下载。如果我删除 Content-Disposition 或将其设置为内联,它将显示在浏览器中。

例如,假设我的站点是 domain.com,并且我已将我的 s3 存储桶设置为 images.domain.com(带有 CNAME)。我想要来自 domain.com 的链接,例如:

<a href="https://images.example.com/picture.jpg" download>Download</a>

它将下载图像,但如果我直接在浏览器中加载https://images.example.com/picture.jpg,它将在浏览器中内联显示。

如上所述,我尝试了 html 链接的下载属性,但它似乎不适用于我的情况。我注意到一些浏览器只支持同源下载链接(例如 Chrome 和 Firefox),但我想知道这是否可以通过 s3 存储桶的 CORS 配置来解决。我尝试在 CORS 配置中允许来自我的主站点,但它似乎没有帮助。我使用以下 CORS 设置设置存储桶:

[
{
    "AllowedHeaders": [
        "*"
    ],
    "AllowedMethods": [
        "PUT",
        "POST",
        "DELETE"
    ],
    "AllowedOrigins": [
        "https://example.com"
    ],
    "ExposeHeaders": []
},
{
    "AllowedHeaders": [],
    "AllowedMethods": [
        "GET"
    ],
    "AllowedOrigins": [
        "*"
    ],
    "ExposeHeaders": []
}

]

我还尝试使用 Safari 来尝试下载链接,但它也不起作用(假设 Safari 对 CORS 内容没有变得更严格)。

关于如何为没有附件内容配置的 s3 图像创建下载链接的任何想法?谢谢。

4

0 回答 0