vue导出excel的问题

前端导出excel显示object Object,调后台是get去请求,response返回文件名去获取,我拿url放到浏览器下载的文件可以正常显示,但在系统里面却不行,请问这是什么原因?
这块是导出的js方法

 // 导出模板
    templateDownload() {
      const param = new URLSearchParams()
      param.append('fileName', '维护模版')
      downloadTemplate(param).then(response => {
        var fileDownload = require('js-file-download')
        fileDownload(response, '维护模版.xlsx')
      })
    },

下面是接口请求

//导出
export function downloadTemplate(query) {
  return axios({
    url: `${process.env.VUE_APP_BASE_TEST_API}${'/report/exp/downloadTemp'}`,
    method: 'get',
    responseType: 'arraybuffer',
    params: query
  })
}
阅读 3.3k
1 个回答

responseType改为blob试试
参考前端常用文件下载上传方法

//data
 downloadImgSrc:'https://i.picsum.photos/id/452/400/300.jpg?hmac=0-o_NOka_K6sQ_sUD84nxkExoDk3Bc0Qi7Y541CQZEs'
//methods
downloadImg() {
      axios({
        url: this.downloadImgSrc, //URL,根据实际情况来
        method: "get",
        responseType: "blob"
      }).then(function (response) {
        const link = document.createElement("a");
        let blob = new Blob([response.data], { type: response.data.type });
        let url = URL.createObjectURL(blob);
        link.href = url;
        link.download = `实际需要的文件名.xlsx`;
        link.click();
        document.body.removeChild(link);
      });
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏