前端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) })