赞
踩

- downloadFile(res, fileName) {
- // 使用后台返回的数据创建一个新的Blob对象
- let blob = new Blob([res]);
- // 如果fileName参数未定义或为空,则从res的headers中获取'content-disposition'字段,并从中提取文件名
- if (!fileName) {
- fileName = res.headers['content-disposition'].split('filename=').pop();
- }
- // 检查当前浏览器是否支持msSaveOrOpenBlob方法(这是旧版IE浏览器特有的API)
- if ('msSaveOrOpenBlob' in navigator) {
- // 如果支持,使用该方法下载文件,参数为Blob对象和文件名
- window.navigator.msSaveOrOpenBlob(blob, fileName);
- } else {
- // 如果不支持,则创建一个新的a元素并隐藏它
- const elink = document.createElement('a');
- // 设置a元素的download属性为文件名,这使得点击a元素时开始下载文件
- elink.download = fileName;
- // 隐藏a元素,使其在页面上不可见
- elink.style.display = 'block';
- // 创建一个指向Blob对象的URL,并设置为a元素的href属性,这样a元素就可以下载该Blob对象表示的文件了
- elink.href = URL.createObjectURL(blob);
- // 将a元素添加到文档的body中,使其可见并可以被点击
- document.body.appendChild(elink);
- // 模拟点击a元素,开始下载文件
- elink.click();
- // 释放之前为Blob对象创建的URL,以释放内存
- URL.revokeObjectURL(elink.href);
- // 从文档的body中移除a元素,清理内存
- document.body.removeChild(elink);
- }
- },

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。