import axios from 'axios'import { getToken } from '@/utils/auth'const mimeMap = {  xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',  zip: 'application/zip'}const baseUrl = process.env.VUE_APP_BASE_APIexport function downloadExcel(str, type="xlsx", filename) {  axios({    method: 'get',    url: baseUrl + str,    responseType: 'blob',    headers: { 'Authorization': 'Bearer ' + getToken() }  }).then(res => {    resolveBlob(res, mimeMap[type])  })}/** * 解析blob响应内容并下载 * @param {*} res blob响应内容 * @param {String} mimeType MIME类型 */export function resolveBlob(res, mimeType) {  var blob = new Blob([res.data], { type: mimeType });  //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.xlsx") 设置的文件名;  var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*');  var contentDisposition = decodeURI(res.headers['content-disposition']);  var result = patt.exec(contentDisposition);  var fileName = result[1];  fileName = fileName.replace(/\"/g, '');  const ObjectUrl = URL.createObjectURL(blob);  // 对于<a>标签,只有 Firefox 和 Chrome(内核)反对 download 属性  if ('download' in document.createElement('a')) {    const aLink = document.createElement('a');    aLink.href = ObjectUrl;    aLink.setAttribute('download', fileName) // 设置下载文件名称    document.body.appendChild(aLink)    aLink.click()    window.URL.revokeObjectURL(ObjectUrl) // 开释URL 对象  } else {    // IE 浏览器兼容办法    window.navigator.msSaveBlob(blob, fileName)  }}

备注:实质还是拿到后盾的文件流数据,而后前端转成二进制文件,通过a标签的download属性来下载