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