/**
* 下载文件
* @param url 请求路径
* @param fileName 文件名称
* @param data 请求数据
* @param method 请求方式
*/
downloadFile (url,fileName,data,method) {
let options = {
url: process.env.VUE_APP_API_URL + url,
method ,
responseType: 'blob',
headers: {'X-Access-Token':oStorageModule.getItem('TOKEN')}
}
if (method.toUpperCase() === 'GET') {
options.params = data
} else {
options.data = data
}
return new Promise((resolve, reject) => {
axios(options)
.then(response => {
// 创建一个 Blob 对象
const blob = new Blob([response.data], {type: response.headers['content-type']});
// 创建一个下载链接
const downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(blob);
// 获取文件名,可以从response的headers中获取
const contentDisposition = response.headers['content-disposition'];
const filename = contentDisposition
? contentDisposition.split('filename=')[1]
: fileName;
// 设置下载链接的属性
downloadLink.setAttribute('download', filename);
// 触发点击事件以开始下载
downloadLink.click();
// 释放URL对象
URL.revokeObjectURL(downloadLink.href);
resolve()
})
.catch(error => {
reject(error)
});
})
},
如果发现下载后无法打开,那可能是因为文件后缀错了,比如是.zip的压缩文件,被写成了.png图片