前端下载——处理后端返回的二进制文件(乱码
1.处理
请求接口添加 如果后台返回给我们的是二进制流数据,我们就要在发送的时候加上{responseType:‘blob’}或者是{responseType: ‘arraybuffer’},这行代码,这样返回给我们的就不是乱码了
export const tgContactsExport = (data: any) => {
return new Promise((resolve, reject) => {
axios
.get(`/tg/tgContacts/export`, {
...data,
responseType:'blob'
})
.then((res: any) => {
resolve(res.data);
})
.catch((err: any) => {
reject(err);
});
});
};
if (result) {
// 执行
const { res, error } = await handleAsync(() => tgContactsExport({ ...paramsPayload, accounts: selected }));
if (error) {
return sendMsg(error?.message || '导出失败', 'error');
}
const link = document.createElement('a');
link.href = window.URL.createObjectURL(res);
link.download = `export${new Date().getTime()}.xlsx`;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
} else {
console.log('Cancelled!');
}