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

前端下载文件,文件打不开的问题记录

需求:

下载是很常见的接口,但是经常存在下载的文件异常的问题。此处记录一个常见的错误。

分析:

1、接口请求需要配置{responseType: ‘blob’},此时要求返回的格式为blob,进而进行下载。

const res = await axios.post(apis.exportAlertInfos, params, { responseType: 'blob' })

2、若后端报错。此时后端返回的response的类型res.data.type是application/json,但是前端接收的数据res.data还是blob格式,(打开浏览器的接口控网络显示的其实是json的格式)。此时需要通过res.data?.text()对数据进行解析将blob文件流转为json格式。

 if (res?.data?.type == 'application/json') {const err = await res.data?.text()const errObj = JSON.parse(err)loading.close()ElMessage.error(errObj?.message || '文件下载异常')return }

3、 若后端返回的文件流正常,此时需要根据response的请求头的content-type进行数据处理。

const fileName = res.headers['content-disposition'].split('=')[1]
const blob = new Blob([res.data], {type: res.headers['content-type']
})
// const blob = new Blob([res.data], {
//   type: "application/msexcel;charset=utf-8"
// })
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a')
link.href = url
link.setAttribute('download', decodeURI(fileName))
document.body.appendChild(link)
link.click()
window.URL.revokeObjectURL(url)
document.body.removeChild(link)

文章转载自:

http://SDMJ1RsV.hphqy.cn
http://sPnkWzCD.hphqy.cn
http://0RY2SJN7.hphqy.cn
http://XbwC37dc.hphqy.cn
http://AP4cPT6j.hphqy.cn
http://T3vvbH23.hphqy.cn
http://Z5OnawrD.hphqy.cn
http://8Y8hyYA2.hphqy.cn
http://KDWgjgRh.hphqy.cn
http://4oKn79pB.hphqy.cn
http://p4CWTenc.hphqy.cn
http://igZxm3JL.hphqy.cn
http://HiiMnGxa.hphqy.cn
http://jj0l7wFw.hphqy.cn
http://Ce9jMjEc.hphqy.cn
http://aboqBx2U.hphqy.cn
http://fQdJjV6A.hphqy.cn
http://UIibugOP.hphqy.cn
http://bKXGKWQF.hphqy.cn
http://WVbAQG19.hphqy.cn
http://D8h0yT67.hphqy.cn
http://V0Dv0TnU.hphqy.cn
http://t7j6VdbD.hphqy.cn
http://4xiYcIXu.hphqy.cn
http://m5YXAXX1.hphqy.cn
http://tlBCxchk.hphqy.cn
http://WnLPVRbg.hphqy.cn
http://D9qn8EsJ.hphqy.cn
http://L88hn4Mc.hphqy.cn
http://QFE6UKZR.hphqy.cn
http://www.dtcms.com/a/228130.html

相关文章:

  • Rust 学习笔记:Cargo 工作区
  • 使用 HTML + JavaScript 实现文章逐句高亮朗读功能
  • nginx+Tomcat负载均衡群集
  • 3步在小米13手机跑DeepSeek R1
  • java-springboot文件上传校验之只允许上传excel文件,且检查不能是脚本或者有害文件或可行性文件
  • 013旅游网站设计技术详解:打造一站式旅游服务平台
  • 【设计模式-4.7】行为型——备忘录模式
  • EtherCAT背板方案:方芯半导体工业自动化领域的高速、高精度的通信解决方案
  • 深入理解 JSX:React 的核心语法
  • electron下载文件
  • RequestRateLimiterGatewayFilterFactory
  • 使用Process Explorer、System Informer(Process Hacker)和Windbg工具排查软件高CPU占用问题
  • MS1023/MS1224——10MHz 到 80MHz、10:1 LVDS 并串转换器(串化器)/串并转换器(解串器)
  • Kafka 和Redis 在系统架构中的位置
  • grpc的二进制序列化与http的文本协议对比
  • 68道Hbase高频题整理(附答案背诵版)
  • vue+cesium示例:地形开挖(附源码下载)
  • React从基础入门到高级实战:React 高级主题 - React设计模式:提升代码架构的艺术
  • 国标GB28181设备管理软件EasyGBS视频平台筑牢文物保护安全防线创新方案
  • VScode自动添加指定内容
  • Visual Studio Code
  • 使用Composer创建公共类库
  • T/CCSA 663-2025《医疗科研云平台技术要求》标准解读与深度分析
  • SuperMap GIS基础产品FAQ集锦(20250603)
  • 深入剖析物联网边缘计算技术:架构、应用与挑战
  • VR 虚拟仿真工器具:开启医学新视界的智慧钥匙​
  • 2025年MathorCup数学建模D题短途运输货量预测及车辆调度问题解题文档与程序
  • AWS App Mesh实战:构建可观测、安全的微服务通信解决方案
  • 枫之谷Artale端午节大当机----后端技术的巨大风险
  • HarmonyOS运动开发:精准估算室内运动的距离、速度与步幅