在日常开发中,咱们可能会遇到导出excel的状况,而后端此时给咱们返回的是一个文件流,须要前端将文件流转为url地址进行下载。

能够将这个办法封装成一个工具类,不便其余中央调用,我这里放到了utils.js外面

import axios from 'axios'import Vue form 'vue'/** * 依据后端返回的文件流转为excel导出 * @param {Object} data */export function exportExcelMethod(data) {  axios({    method: data.method,    url: `${data.url}${data.params ? '?' + data.params : ''}`,    responseType: 'blob',    headers: {      token: data.token    },    timeout: 8000,    data: data.data  })    .then((res) => {      const link = document.createElement('a')      const blob = new Blob([res.data], {        type: 'application/vnd.ms-excel'      })      link.style.display = 'none'      link.href = URL.createObjectURL(blob)      // link.download = res.headers['content-disposition'] //下载后文件名      link.download = data.fileName //下载的文件名      document.body.appendChild(link)      link.click()      document.body.removeChild(link)      Vue.prototype.$message.success('导出胜利!')    })    .catch((error) => {      Vue.prototype.$message.error('参数谬误!')    })}
<el-button type="primary" plain size="small" @click="exportLog">导出</el-button>
import { exportExcelMethod } from '@/utils'exportLog() {    const url = this.baseUrl    const data = this.data    const myObj = {      method: 'post',      url: url,      fileName: 'xxx日志',      token: this.token,      data: { data }    }    exportExcelMethod(myObj)  }