前端处理后台返回的.excel链接控制台输出是乱码

文章讲述了如何使用Axios处理从后台获取的Excel文件乱码问题,通过设置responseType为arraybuffer和正确的Content-Type来确保文件正确下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端处理后台返回的.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 文件能够正确显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值