后端传入文件为文件流时怎么下载才能不乱🐎?
后端传给前端的响应有很多种格式,当响应为文件流时,怎么处理?
重点看
Content-Type 是响应数据的格式,意味着我们应该根据这个格式来处理得到的文件流。
代码
axios({
method: "GET",
url: "http://10.0.102.47:8080/api/download",
params: {
task_id:taskId,
},
responseType: 'blob'
})
.then(function(e){
const output = e.data; //请注意这里的dataSource已经被修改后的更新了的dataSource
const blob = new Blob([output], { type: 'application/octet-stream'});
const href = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = href;
link.download = fileNameNo +'.csv';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
})
.catch((err) => {
console.log(err);
});
上面有两个注意的是:
- 必须在请求时加上 responseType:‘blob’
- const blob = new Blob([output], { type: ‘application/octet-stream’});里的type是根据上面的图中,content-type来的。
经过一套流程下来,就可以正确的下载文件了
不了解blob的可以直接百度