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对象
  });
}
上一篇下一篇

猜你喜欢

热点阅读