码迷,mamicode.com
首页 > 其他好文 > 详细

前端接收后端文件流导出excel文档遇到的问题

时间:2020-05-27 15:55:25      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:文件   后端   不同   download   blank   导出   obj   creat   array   

先上代码:

Vue.prototype.download = function(oUrl, filename) {
  this.axios
    .get(oUrl, { responseType: ‘arraybuffer‘ })
    .then((res) => {
      console.log(res);
      // type 为需要导出的文件类型,此处为xls表格类型
      const blob = new Blob([res.data], { type: ‘application/vnd.ms-excel‘ });
      // 兼容不同浏览器的URL对象
      const url = window.URL || window.webkitURL || window.moxURL;
      // 创建下载链接
      const downloadHref = url.createObjectURL(blob);
      // 创建a标签并为其添加属性
      let downloadLink = document.createElement(‘a‘);
      downloadLink.target = ‘_blank‘;
      downloadLink.href = downloadHref;
      filename = filename ? filename : new Date().getTime();
      downloadLink.download = filename + ‘.xls‘;
      // 触发点击事件执行下载
      downloadLink.click();
    })
    .catch((err) => {
      console.error(err);
    });
  // window.open(location.origin + axios.defaults.baseURL + oUrl); //直接跳转文件地址下载,有些页面无法正常下载,暂未解决,待排查。
};

请求一定要设置

responseType: ‘arraybuffer‘

createObjectURL(blob)中的地址一定要是Blob对象:

const blob = new Blob([res.data], { type: ‘application/vnd.ms-excel‘ });

前端接收后端文件流导出excel文档遇到的问题

标签:文件   后端   不同   download   blank   导出   obj   creat   array   

原文地址:https://www.cnblogs.com/evanc/p/12972931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!