我知道当使用 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 图像创建下载链接的任何想法?谢谢。