使用javascript为用户提供图像下载

Providing user a image download with javascript

本文关键字:图像 下载 用户 javascript 使用      更新时间:2023-09-26

假设我有一些网络图像的url。比方说。。。url为"http://hd.wallpaperswide.com/thumbs/abstract_crystal_structure-t2.jpg"

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

我试过了。。

window.location.href = Link;

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

如何实现。。

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

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

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

请在此处查看我的答案了解更多信息,记住您不需要做任何dataURI的事情,因为您有直接链接。

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

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

您不能使用JavaScript强制执行此行为。(即使使用Content-Disposition标头,您也不能100%依赖此控件。不同浏览器的支持也不同。)

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

https://github.com/dcneiner/Downloadify

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

有很多反对这种方法的论点(从责任角度、从安全角度和从性能角度),除非你别无选择,否则我不建议你这样做。