我想制作一个<a href
链接,当点击它时,会弹出“另存为”对话框。在所有现代浏览器上,使用HTML5的download
属性应该有这种行为。
当目标是外部托管的图像文件时,这种方法不起作用。 <a href
链接将导航到图片而不是下载它。(在Imgur和Tumblr上测试)
<a href="https://istack.dev59.com/440u9.webp" download>
<img src="https://istack.dev59.com/440u9.webp" width="200"/>
</a>
如果图片托管在您的服务器上,类似的HTML代码可以正常工作,例如:
<a href="440u9.png" download>
<img src="440u9.png" width="200"/>
</a>
另一个例子-这个例子可以在W3Schools Tryit Editor中工作,但是如果您将HTML复制到另一个沙盒(如JSFiddle),则无法工作。
<a href="https://www.w3schools.com/images/myw3schoolsimage.jpg" download>
<img src="https://www.w3schools.com/images/myw3schoolsimage.jpg" width="104" height="142">
</a>
可能的原因:
- 图片URL有问题:不是,URL没有问题,在浏览器中可以将URL作为普通图片打开
- 使用https链接可能会因安全性问题而无法使用:不是,如果URL指向相同的域名,则带有
https:
的URL可以使用,已在W3Schools Tryit Editor上测试 - 服务器端重定向:一个
http://...
链接可以被重定向到https://...
,所以这可能是失败的原因之一,但https://...
链接也无法正常工作 - 特定主机抑制服务器上的下载属性?这种情况是否可能?下载属性应该仅控制客户端浏览器操作,而不是服务器端的操作,对吗?
有什么解决办法吗?我已尝试了在这里和这里讨论的Javascript下载方法,但最终都需要类似于点击href
链接的浏览器操作。
有关下载链接的深入讨论,包括在PHP中设置application/force-download
属性。
相关的StackOverflow问题:强制外部下载URL(答案似乎是不正确的)。