import {getOutExcel} from '@/utils'
methods:{
exportfile(){
let params={
"xxx":xx,
"xx": xx,
}
exportFiles(params,res=>{//文件下载接口
// 将blob转成字符串
let reader = new FileReader();// 读取文件内容
reader.readAsText(res.data)//读取文本文件 res.data 接口返回值
reader.onload=(result)=>{//onload:文件读取成功时触发
try{
let jsonData=JSON.parse(result.target.result);
if(jsonData.errMsg) {
message.error(jsonData.errMsg)
}
}catch(err) {
getOutExcel("xx.xlsx", res.data);
}
}
},fail=>{})
},
}
/**
注:
1:FileReader : 读取文件内容
readAsText() 读取文本文件,(可以使用Txt打开的文件)
readAsBinaryString(): 读取任意类型的文件,返回二进制字符串
readAsDataURL: 方法可以将读取到的文件编码成DataURL ,可以将资料(例如图片、excel文件)内嵌在网页之中,不用放到外部文件
abort: 中断读取
2:FileReader 提供一个完整的事件模型,用来捕获读取文件的状态
onabort:读取文件断片时触发
onerror:读取文件错误时触发
onload:文件读取成功时触发
onloadend:文件读取完毕之后,不管成功还是失败触发
onloadstart: 开始读取文件时触发
onprogress:读取文件过程中触发
**/
utils.js
// 二进制流 转换成excel
/* fileName : 文件名 res:二进制流 */
export function getOutExcel(fileName, res) {
let blob = new Blob([res], { type: 'application/x-xls' });
if (window.navigator.msSaveOrOpenBlob) {
//兼容 IE & EDGE
navigator.msSaveBlob(blob, fileName);
} else {
var link = document.createElement('a');
// 兼容不同浏览器的URL对象
const url = window.URL || window.webkitURL || window.moxURL
// 创建下载链接
link.href = url.createObjectURL(blob);
//命名下载名称
link.download = fileName;
//点击触发下载
link.click();
//下载完成进行释放Q
url.revokeObjectURL(link.href);
}
}