我知道,当使用s3时,具有内联内容配置的图像将显示在浏览器中,并且具有附件内容配置的图片将被下载。我希望的是,当直接加载时,可以允许图像在线显示,但也可以有一个下载链接,如果点击它,就会下载。更具体地说,如果我在S3中有一个具有以下设置的jpeg图像:
Content-Disposition attachment
SystContent-Type image/jpeg
然后,无论何时直接加载,它都会下载。如果我删除内容处置,或将其设置为内联,它将显示在浏览器中。
例如,假设我的网站是domain.com,我已经将s3 bucket设置为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 bucket的CORS配置来解决的问题。我试着在CORS配置中允许从我的主站点发起,但似乎没有帮助。我用以下CORS设置设置了bucket:
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"https://example.com"
],
"ExposeHeaders": []
},
{
"AllowedHeaders": [],
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
}
]
我还尝试使用Safari尝试下载链接,但也不起作用(假设Safari对CORS内容没有变得更严格(。
关于如何为没有附件内容配置的s3图像创建下载链接,有什么想法吗?谢谢
您可以尝试在视图链接中使用url查询参数。
https://images.example.com/picture.jpg?response-内容处置=内联