前端post请求下载excel文件,无法打开

problem

前端post请求后,拿到数据下载excel文件,但是报错:文件无法打开

大致过程:

  • 前端:调用后端 post ajax 请求
  • 后端:返回的文件流 content-disposition: attachment
  • 前端:拿到二进制文件流 blob 转成 url,然后用 js 模拟 a标签,然后触发download

reason

如果发现导出的文件格式错误,打不开,多半是responseType的错误
后端返回二进制数据,需要前端正确处理 才能使用

solution

解决办法:

  • axios responseType设置为 blob/arrayBuffer 都可以
  • 实际 axios.responseType 对应的是 XMLHttpRequest.responseType
export function exportData(data) {
  return request({
    url: '/task/export',
    method: 'post',
    // 添加配置:blob arraybuffer 都可以
    responseType: 'blob', 
    data
  })
}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐