前端vue使用blob下载流文件

请求后端接口,发现返回的是这么一堆东西

 代码:

axios:

export function exportEcoCarAppoint(params) {
  return Http({
    url: '/api/jsis/ecoCarAppoint/exportEcoCarAppoint' ,
    method: 'POST',
    data: params,
    responseType: 'blob',   //设置响应格式
  })
}

js:

exportEcoCarAppoint(this.search).then(res => {
        // window.URL.createObjectURL(new Blob([res],{type:['image/png', 'pdf','doc','docx','xlsx','xls']}))
        let b = new Blob([res.data]);     //拿到文件流下载对象, 有的定义不需要.data,根据后端返回字段定
        let url = window.URL.createObjectURL(b);  //生成文件流下载链接
        let a = document.createElement('a');      //创建一个a标签用来跳转
        a.href = url;                             // a标签 href  赋值 链接  
        a.download = '报表.xlsx';                  //设置下载文件的文件名和文件格式, 这里一定要加上格式,不然下载的文件一直是txt格式的
        document.body.appendChild(a);             //将标签DOM,放置页面
        a.click();                              
        window.URL.revokeObjectURL(url);     //释放 url 对象内存
        document.body.removeChild(a);
      }).catch(err => {
        return Promise.reject(err)
      })

 

posted @ 2023-08-16 17:41  front-gl  阅读(539)  评论(0编辑  收藏  举报