话不多说,上代码:

try {
let reader = new FileReader();
let blob = new Blob([res.data], { type: 'application/octet-stream;charset=UTF-8' });
reader.readAsArrayBuffer(blob);
reader.onload = function() {
let data = new Blob([this.result]);
// 判断是否为文件流数据
if (data.size === 0) this.$message({ message: '生成文件失败', type: 'error' });
};
let downloadElement = document.createElement('a');
let href = window.URL.createObjectURL(blob); // 创建下载的链接
let head = res.headers['content-disposition'];
if (!head) {
this.$message({ message: '导出失败', type: 'error' });
return;
}
downloadElement.href = href;
head = decodeURI(head.split(';')[1].split('=')[1]); // url转码中文
downloadElement.download = head; // 下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); // 点击下载
document.body.removeChild(downloadElement); // 下载完成移除元素
window.URL.revokeObjectURL(href); // 释放掉blob对象
} catch (e) {
let head = res.headers['content-disposition'];
head = decodeURI(head.split(';')[1].split('=')[1]); // url转码中文
if ('msSaveOrOpenBlob' in navigator) {
window.navigator.msSaveOrOpenBlob(new Blob([res.data]), head);
} else {
const url = window.URL.createObjectURL(new Blob([res.data], { type: 'application/octet-stream;charset=UTF-8' }));
const link = document.createElement('a'); link.style.display = 'none';
link.href = url;
link.setAttribute('download', head);
document.body.appendChild(link);
link.click();
}
}

  

最新文章

  1. VS2013菜单栏文字全大写的问题
  2. 老王讲自制RPC框架.(四.序列化与反序列化)
  3. 安卓自动化测试:Android studio 自带的 Record Espresso Test || [ Appium & (Android studio || Python|| Eclipse ) ]
  4. Vue基础---->VueJS的使用(一)
  5. HTML5鼠标hover的时候图片放大的效果展示
  6. (转)在iOS中使用icon font
  7. 关于datagridview单元格不切换焦点无法获得新输入数据的问题解决方法
  8. 【转】LaTeX 符号命令大全
  9. java_代码注释风格
  10. C# 语言规范_版本5.0 (第17章 特性)
  11. Linux shell 操作 postgresql,并设置crontab任务
  12. oracle如何连接别人的数据库,需要在本地添加一些配置
  13. c#下载文件选择路径控件
  14. 迭代和JDB(课下作业,选做)
  15. kindeditor富文本编辑器初步使用教程
  16. puppeteer 爬虫 pdf 截图 自动化
  17. Code Chef MINPOLY(计算几何+dp)
  18. [Codeforces 321D][2018HN省队集训D4T2] Ciel and Flipboard
  19. tomcat启动后过一会就自动关闭
  20. 使用UDP和TCP协议的各种应用和应用层协议

热门文章

  1. Elastic-Job-Lite 源码分析 —— 运维平台
  2. 【BZOJ3139】[HNOI2013]比赛(搜索)
  3. 【转】Git 安装和使用教程
  4. Python 线程同步
  5. spark性能调优(四) spark shuffle中JVM内存使用及配置内幕详情
  6. 关于NIO一些优化
  7. 界面编程之QT的基本介绍与使用20180722
  8. 《剑指offer》— JavaScript(25)复杂链表的复制
  9. 在windows上部署使用Redis出现问题的解决方法
  10. SQL Server 查询性能优化——覆盖索引