当前位置: 首页 > news >正文

【Axios】解决Axios下载二进制文件返回空对象的问题

【Axios】解决Axios下载二进制文件返回空对象的问题

问题背景

在一个基于Vue 3的项目中,我们使用Axios下载Excel文件,但遇到了一个奇怪的问题:文件能成功下载下来,但打开时显示内容为[object Object]无法使用。

当我们执行下载代码:

const response = await downloadTaskResult(task.id)
const blob = new Blob([response], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })

浏览器控制台打印response发现,它竟然是一个空对象,而不是预期的二进制数据流。

排查过程

1. 检查API函数是否正确设置

首先查看了API函数实现:

export function downloadTaskResult(id) {return request({url: `/api/data-clean/tasks/${id}/download`,method: 'get',responseType: 'blob',responseHeaders: true});
}

确认responseType: 'blob'设置正确,表明我们希望Axios将响应作为二进制数据处理。

2. 尝试用curl直接请求接口

用curl命令直接请求后端接口,确认后端返回的确实是正确的Excel文件:

curl -v -o test_download.xlsx http://127.0.0.1:8000/api/data-clean/tasks/3/download

下载的Excel文件大小正常(约300KB),表明后端返回数据没问题。

3. 检查后端接口代码

查看后端FastAPI的文件下载接口:

@router.get("/tasks/{task_id}/download", summary="下载清洗结果")
async def download_result(task_id: int = Path(..., description="任务ID"),db: Session = Depends(get_db)
):# ...文件查找逻辑省略...# 获取文件名部分file_name = os.path.basename<

相关文章:

  • MapReduce报错 HADOOP_HOME and hadoop.home.dir are unset.
  • 课程审核流程揭秘:确保内容合规与用户体验
  • 高频算法面试题总结
  • 【25软考网工】第六章 网络安全(1)网络安全基础
  • 【MYSQL错误连接太多】
  • 如何构建容器镜像并将其推送到极狐GitLab容器镜像库?
  • 自定义prometheus exporter实现监控阿里云RDS
  • 5月9号.
  • 数据分析怎么做?高效的数据分析方法有哪些?
  • 多容器运行
  • Python训练营打卡DAY20
  • Android应用隐私合规:解决极光推送SDK提前收集WiFi信息问题
  • 三维底座+智能应用,重构城市治理未来
  • 【计算机视觉】OpenCV项目实战:get_inverse_perspective:基于OpenCV的透视图转化为不同平面
  • Uniapp编写微信小程序,使用canvas进行绘图
  • 企业如何将钉钉付款单高效集成到金蝶云星空?
  • 数智读书笔记系列032《统一星型模型--一种敏捷灵活的数据仓库和分析设计方法》
  • 开源数字人框架 AWESOME - DIGITAL - HUMAN:技术革新与行业标杆价值剖析
  • 从“山谷论坛”看AI七剑下天山
  • 十三、基于大模型的在线搜索平台——整合function calling流程
  • 新修订的《婚姻登记条例》明起施行,领证不用户口本了
  • 中华人民共和国和俄罗斯联邦关于全球战略稳定的联合声明
  • 迪拜金融市场CEO:2024年市场表现出色,超八成新投资者来自海外
  • 昆明阳宗海风景名胜区19口井违规抽取地热水,整改后用自来水代替温泉
  • 法治日报:商品明细是隐私,外卖员快递员不应知晓
  • 上海国际电影节特设“走进大卫·林奇的梦境”单元