a标签下载文件不兼容的firefox问题
前言:一般使用a标签进行文件下载,总是使用JS创建一个a标签并放在body中,然后使用a.click方法下载,但此方法不适用于火狐
下面就是最实用的一种方式,基本兼容全部浏览器
// 请求接口,获取文件流
let res = await downTemplateFile({id1:this.downLoad})
let blob = new Blob([res])
// 将拿到的文件流形成自己临时地址
let objectUrl = window.URL.createObjectURL(blob)
// 判断是否存在,不存在就是火狐
if(navigator.msSaveBlob){
// 使用navigator.msSaveBlo方法下载,后边跟上你的文件名和后缀
return navigator.msSaveBlo(blob,this.templateName+'.doc')
}else{
// 创建一个a标签
let a = document.createElement('a')
// 插入到body中
document.body.appendChild(a);
// 隐藏a标签
a.style.display = 'none'
// 设置a标签href属性为刚才获取到的临时地址
a.setAttribute('href', objectUrl)
// 不加download不会下载哦,后边跟上你的文件名和后缀
a.setAttribute('download', this.templateName+'.doc')
// 执行下载
a.click();
// 释放缓存
URL.revokeObjectURL(objectUrl);
}