博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js 实现多文件批量下载
阅读量:4702 次
发布时间:2019-06-09

本文共 1979 字,大约阅读时间需要 6 分钟。

 

关于兼容性问题:

  <a href="xxx.docx" target='_blank'></a>

  下载文件时,这种写法是没有兼容性问题;但是下载图片时,IE 上会出现当前页面直接打开图片的问题,即便是加了 target='_blank'。

 

2019.8.19 更 


 

单个文件批量下载 

方法一:H5 <a> 新特性

  HTML 5 里面为 <a> 标签添加了一个 download 的属性,我们可以轻易的利用它来实现下载功能。download 的属性值是可选的,它用来指定下载文件的文件名。

  

方法二:js

js 实现的思路是:

1、添加 <a>标签

  • 用 JavaScript 创建一个隐藏的 <a> 标签

  • 设置它的 href 属性

  • 设置它的 download 属性

  • 用 JavaScript 来触发这个它的 click 事件

实现代码:假设引入了 jquery.js

var a = document.createElement('a');var url = window.URL.createObjectURL(blob);var filename = 'what-you-want.txt';a.href = url;a.download = filename;a.click();a.remove(); // 移除掉 

 

2、如果不用 H5 新特性,动态添加 <iframe>

  会独立打开一个窗口,发起该请求,当请求完成后,该界面会自动关闭。

1 var frame = $('');2 frame.attr('src', url);3 $(document.body).append(frame);4 setTimeout(function() {5   frame.remove();6 }, 1000);

 

兼容 IE 360兼容模式:

 如果文件不是 .png .gif .jpg 这种照片格式,可采用 window.open(url,  '_blank') 下载。

function isIE () {      if (!!window.ActiveXObject || 'ActiveXObject' in window) {        return true      } else {        return false      }    },   function download () {      let url = '../../../static/cds/files/研究方案及团队情况表.docx'      if (this.isIE()) { // IE        window.open(url, '_blank')      } else {        let a = document.createElement('a') // 创建a标签        let e = document.createEvent('MouseEvents') // 创建鼠标事件对象        e.initEvent('click', false, false) // 初始化事件对象        a.href = url // 设置下载地址        a.download = 'xxxx表' // 设置下载文件名        a.dispatchEvent(e)      }    },

 

批量下载多个文件:

思路:将 url 放在一个数组里,循环数组并触发下载:

let files = ['url1', 'url2'] // 所有文件      files.forEach(url => {        if (this.isIE()) { // IE          window.open(url, '_blank')        } else {          let a = document.createElement('a') // 创建a标签          let e = document.createEvent('MouseEvents') // 创建鼠标事件对象          e.initEvent('click', false, false) // 初始化事件对象          a.href = url // 设置下载地址          a.download = '' // 设置下载文件名          a.dispatchEvent(e)        }      })

 

 

参考链接:

 

转载于:https://www.cnblogs.com/zhangym118/p/11352164.html

你可能感兴趣的文章
【模式识别与机器学习】——SVM举例
查看>>
【转】IT名企面试:微软笔试题(1)
查看>>
IO流入门-第十章-DataInputStream_DataOutputStream
查看>>
DRF的分页
查看>>
Mysql 模糊匹配(字符串str中是否包含子字符串substr)
查看>>
python:open/文件操作
查看>>
流程控制 Day06
查看>>
Linux下安装Tomcat
查看>>
windows live writer 2012 0x80070643
查看>>
tomcat 和MySQL的安装
查看>>
git常用操作
查看>>
京东SSO单点登陆实现分析
查看>>
u-boot启动第一阶段
查看>>
MySQL批量SQL插入性能优化
查看>>
定义列属性:null,default,PK,auto_increment
查看>>
用户画像展示
查看>>
C#中StreamReader读取中文出现乱码
查看>>
使用BufferedReader的时候出现的问题
查看>>
批处理文件中的路径问题
查看>>
hibernate出现No row with the given identifier exists问题
查看>>