前端处理后台返回的.excel链接控制台输出是乱码
使用接口后发现返回的是乱码
解决方法:
使用 Axios 进行网络请求时,您可以通过使用 responseType 和配置正确的字符编码来解决 Excel 导出后台返回数据乱码的问题。下面是一个示例:
axios({
method: 'get',
url: '/api/export',
responseType: 'arraybuffer', // 指定响应类型为二进制数据(例如 Excel 文件)
headers: {
'Content-Type': 'application/vnd.ms-excel', // 设置请求头中的 Content-Type
},
})
.then(response => {
const blob = new Blob([response.data], { type: 'application/vnd.ms-excel' });
const downloadUrl = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = downloadUrl;
link.download = 'example.xlsx'; // 指定文件名
link.click();
URL.revokeObjectURL(downloadUrl);
})
.catch(error => {
console.error('请求出错', error);
});
在上面的示例中,我们使用了 Axios 发起了一个 GET 请求,并通过设置 responseType 为 arraybuffer 指定了响应的数据类型为二进制数据。此外,我们还设置了请求头中的 Content-Type 为 application/vnd.ms-excel,以确保服务器正确识别导出的文件类型。
在成功获取响应后,我们将响应的数据创建为一个 Blob 对象,指定类型为 application/vnd.ms-excel,然后使用 URL.createObjectURL 创建一个临时的 URL,并创建一个链接元素 。通过设置该链接元素的 href 属性、download 属性(指定文件名)和调用 click() 方法,模拟用户点击下载链接来保存导出的文件。最后,我们使用 URL.revokeObjectURL 释放临时的 URL 对象。
请注意,上述示例的 Axios 配置和处理逻辑适用于前端使用的大多数后台框架。您可能需要根据自己的后台框架和需求进行适当的调整。确保后台正确设置了字符编码,并且前端也正确处理了字符编码,以确保下载的 Excel 文件能够正确显示。