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