Vue axios授权下载文件

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对象
  });
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容