项目中遇到一个需求,用户下载文件,会从后端那里请求接口获得数据并下载导出excel表格
后端小哥给我返回的是二进制数据流,需要前端自己去处理这些数据
如下图,请求接口返回的数据都是乱码

这里我们可以在axios的请求里添加,这样返回的二进制数据就会被读取为Blob的数据,
responseType: ‘blob’
fetchGet1(url, params) {
return axios({
url,
method: 'get',
params,
header: {
headers: { 'Content-Type': 'application/x-download' }
},
responseType: 'blob' //指明返回格式
})
}
//下载接口
export var downLoadOrder = (orderId) => ajax.fetchGet1(`/api/order/excel/${orderId}`)
当我点击下载订单的按钮后,浏览器就自动弹出下载excel文件一栏了,要注意的是,我的电脑好像没有xlsx格式的文件,所以在定义文件名那里改成了xls的格式