Vue axios授权下载文件
2021-04-09 本文已影响0人
Linseed
import axios from 'axios';
/**
* 授权下载文件
* @param {*} url
* @param {*} contentType xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
* xls: 'application/vnd.ms-excel'
* @param {*} fileName 下载文件名 "test.xls"
*/
export function downloadFile(url, contentType, fileName) {
let token = sessionStorage.getItem('token')
axios.request({
url: url,
headers: { 'token': token },//验证头信息
responseType: 'blob'
}).then(res => {
const blob = new Blob([res.data], { type: contentType })
const link = document.createElement('a'); // 创建a标签
link.style.display = 'none';
link.href = URL.createObjectURL(blob); // 创建下载的链接
link.setAttribute('download', fileName); // 给下载后的文件命名
document.body.appendChild(link);
link.click(); // 点击下载
document.body.removeChild(link); // 完成移除元素
window.URL.revokeObjectURL(link.href); // 释放blob对象
});
}