假设我在网络上有一些网址图片。让我们说...... 网址是“http://hd.wallpaperswide.com/thumbs/abstract_crystal_structure-t2.jpg”
现在我想当用户按下下载按钮时,他将下载图像。
我试过了..
window.location.href = Link;
但有时它只是在浏览器上打开图像.. 有时下载是按照预期提供的。
如何实现..
答案 0 :(得分:1)
执行此操作的唯一方法是使用Content-Disposition
标头,服务器端。
Content-Disposition: attachment; filename="somefile.jpg"
您无法使用JavaScript强制执行此行为。 (即使使用Content-Disposition
标题,您也不能100%依赖此控件。支持因浏览器而异。)
答案 1 :(得分:1)
Assuming a HTML5/ES5 browser,您可以使用<a>
元素的 download 属性。
<a>
上的 download 属性设置为您想要的文件名。如果您已经使用<a>
作为下载按钮,则无需模拟点击,只需使用该元素即可。
请查看我的回答here了解更多信息,请记住,由于您有直接链接,因此无需执行任何dataURI内容。
答案 2 :(得分:0)
如果您愿意依赖Flash,这个库可以解决问题。
答案 3 :(得分:0)
如果您愿意牺牲下载速度,可以创建一个充当代理的服务器端脚本:它会将文件下载到您的服务器,然后将其传递到客户端的浏览器Brad的答案中提到的适当的标题(Content-Disposition: attachment
)。您可以改为链接到您自己服务器上的“网关”,而不是链接到文件本身。具体实现取决于您的基础结构和您选择使用的语言/库。
有许多反对这种方法的论据(责任方面,安全方面和绩效方面),除非你没有其他选择,否则我不会推荐它。