js怎么实现图片文件下载而不是在新窗口打开?

我已经有了图片的地址(url)
现在需要点击按钮然后打开下载对话框,下载图片文件
但是如果这样做:

var a = document.createElement('a');
a.href = this.editBrand.contract; 
a.download="file"; 
a.click();

只会打开新窗口,而不是打开下载对话框。
谢谢

阅读 23.7k
7 个回答

a - HTML 属性

download 属性
此属性指示浏览器下载URL而不是导航到URL,因此将提示用户将其保存为本地文件。
如果属性有一个值,它将在保存提示中用作预先填写的文件名 (用户仍然可以根据需要更改文件名)。对允许的值没有限制,但是/和被转换为下划线。大多数文件系统限制文件名中的一些标点符号,浏览器会相应地调整建议的名称。

注意:
此属性仅适用于同源 URLs。

仅适用于同源。

a标签的download 属性加上以后,src是图片地址的话,是可以下载图片的,得是同源的图片地址才可以下载。

最简单的方法

 <button onclick="down()">下载</button>
  <script>
    function down() {
      var a = document.createElement('a');
      a.href = 'timg.jpg'; //图片地址
      a.download = "file.jpg"; //图片名及格式
      document.body.appendChild(a);
      a.click();
    }

可以看看这篇文章
https://www.jianshu.com/p/8ad...

var a = document.createElement('a');
a.download = this.editBrand.contract;
a.click();
新手上路,请多包涵

楼主解决了吗?我也遇到了这个问题,只有一个文件地址

其实直接 window.location = '地址'; 也好用吧?
首先你的是图片地址还是图片的下载地址?
如果是下载地址的话 应该没什么问题的
但只是图片地址的话那肯定是打开图片了 而不是下载窗口
clipboard.png
直接就在原窗口下载了呀!

clipboard.png
但是我加了a.target = '_blank'
clipboard.png
就在新窗口下载了

clipboard.png
你可以加一个 a.target = '_self';
试试 或者直接 window.location = '地址';
我感觉好用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏