0

假设我有一些指向网络上图像的 url。可以说...网址是“ http://hd.wallpaperswide.com/thumbs/abstract_crystal_structure-t2.jpg

现在我想当用户按下下载按钮时,图像将被下载。

这个我试过了。。

window.location.href = Link;

但有时它只是在浏览器上打开图像..有时会按预期提供下载。

如何达到..

4

4 回答 4

1

做到这一点的唯一方法是使用Content-Disposition服务器端的标头。

Content-Disposition: attachment; filename="somefile.jpg"

您不能使用 JavaScript 强制执行此行为。(您也不能 100% 依赖此控件,即使使用Content-Disposition标题也是如此。支持因浏览器而异。)

于 2013-02-04T03:29:24.993 回答
1

假设一个 HTML5/ES5 浏览器,你可以使用元素的下载属性。<a>

  1. 下载属性设置<a>为所需的文件名。
  2. href设置为图像的位置。
  3. 模拟点击它。

如果您已经使用 an<a>作为下载按钮,则不必模拟点击,只需使用该元素即可。

在此处查看我的答案以获取更多信息,请记住,您无需执行任何 dataURI 操作,因为您有直接链接。

于 2013-02-04T04:04:46.107 回答
0

如果你愿意依赖 Flash,这个库可以解决这个问题。

https://github.com/dcneiner/Downloadify

于 2013-02-04T03:36:39.423 回答
0

如果您愿意牺牲下载速度,您可以创建一个充当代理的服务器端脚本:它将文件下载到您的服务器,然后使用适当的标头将其传递给客户端的浏览器 ( Content-Disposition: attachment) 如布拉德的回答中所述。而不是链接到文件本身,而是链接到您自己服务器上的“网关”。确切的实现将取决于您的基础设施和您选择使用的语言/库。

有许多反对这种方法的论据(责任方面、安全方面和性能方面),除非您别无选择,否则我不会推荐它。

于 2013-02-04T03:44:36.973 回答