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

【采坑分享】导出文件流responseType:“blob“如何提示报错信息

目录

前言:

采坑之路

总结:


前言:

近日,项目中踩了一个坑分享一下经验,也避免下次遇到方便解决。项目基于vue2+axios+element-ui,业务中导出按钮需要直接下载接口中的文件流。正常是没有问题,但是测试确测出来参数正确时,后端接口没有返回文件流,而是报错提示。返回结果集如图:

采坑之路

1.正常接口返回result里就直接输出message,然后显示错误提示就好了。

问题是我们用的axios中post请求的,responseType:"blob"类型设置死了,接收的只有文件流相关信息,打印了res,没有后端的返回错误码:

这就尴尬了,原逻辑不管数据是不是都该返回一个二进制文件流的内容来下载,即使是个空文件是吧。但是遇到这个错误提示,就得解决啊。

2.寻求网上方法,最终填坑完成,分享一下这个完整解法:

 this.axios.post('/zzh/afterSale/exportAfterSaleMaintainForm', JSON.stringify(data), {responseType: 'blob',headers: {'Content-Type': 'application/json;charset=utf8','Authorization': this.$store.state.user.token,'Language': this.lan,},}).then(function (res) {// responseType: 'blob' 这个类型获取报错提示if(res.data.success===undefined && res.data.type === 'application/json'){const fileReader = new FileReader()fileReader.readAsText(res.data,'utf-8')fileReader.onload = function(){const result = JSON.parse(fileReader.result)_this.$message.error(_this.$t('errorCode.' + result.code)); // 业务中拼接报错提示}return}const content = res.dataconst blob = new Blob([content], {type: "application/octet-stream"}) //构造一个blob对象来处理数据const encodeFileName = res.headers['content-disposition'].split(';')[1].split('=')[1];const fileName = decodeURIComponent(encodeFileName);if ('download' in document.createElement('a')) { //支持a标签download的浏览器const link = document.createElement('a') //创建a标签link.download = fileName //a标签添加属性link.style.display = 'none'link.href = URL.createObjectURL(blob)document.body.appendChild(link)link.click() //执行下载URL.revokeObjectURL(link.href) //释放urldocument.body.removeChild(link) //释放标签} else { //其他浏览器navigator.msSaveBlob(blob, fileName)}})

总结:

1.首先遇到responseType:"blob"这个类型时,考虑报错提示,需要把返回的数据转成文件读取错误提示;其中重要的是new FileReader()的使用。

2.文件下载的方法,组装成二进制流文件,注意获取content-disposition中文件名,否则下载的文件会是损坏的!其中重要的是 new Blob()的使用,创建对象A标签,模拟点击下载文件。

以上就是今天的分享,欢迎关注我,点赞评论!~

相关文章:

【采坑分享】导出文件流responseType:“blob“如何提示报错信息

目录 前言: 采坑之路 总结: 前言: 近日,项目中踩了一个坑分享一下经验,也避免下次遇到方便解决。项目基于vue2axioselement-ui,业务中导出按钮需要直接下载接口中的文件流。正常是没有问题,但…...

机器学习算法——主成分分析(PCA)

目录 1. 主体思想2. 算法流程3. 代码实践 1. 主体思想 主成分分析(Principal Component Analysis)常用于实现数据降维,它通过线性变换将高维数据映射到低维空间,使得映射后的数据具有最大的方差。主成分可以理解成数据集中的特征…...

01、copilot+pycharm

之——free for student 目录 之——free for student 杂谈 正文 1.for student 2.pycharm 3.使用 杂谈 copilot是github推出的AI程序员,将chatgpt搬到了私人终端且无token限制,下面是使用方法。 GitHub Copilot 是由 GitHub 与 OpenAI 合作开发的…...

一般将来时

一般将来时 概念 表示将要发生的动作或打算、计划准备做某事 时间 tomorrow 明天 the day after tomorrow 后天 next week 下周 next weekend 下周末 next month 下个月 next year 明年 ...句子结构 主语 be(am/is/are)going to do … 计划,…...

【古诗生成AI实战】之四——模型包装器与模型的训练

在上一篇博客中,我们已经利用任务加载器task成功地从数据集文件中加载了文本数据,并通过预处理器processor构建了词典和编码器。在这一过程中,我们还完成了词向量的提取。 接下来的步骤涉及到定义模型、加载数据,并开始训练过程。…...

redis实现消息延迟队列

业务场景 在很多软件系统功能中都会出现定时任务的业务场景,比如提前点单,比如定时发布动态,文章等而出现这样的的定时的任务为延迟队任务 代码模块 任务的持久化一般都需要建立一个任务表和任务日志表,避免宕机导致任务失效,先新建立一个数据库,创建基本的任务表和任务日志表…...

keyof

// 在TypeScript中,keyof是一个操作符, // 它允许你从一个类型中提取所有的可枚举属性名,并将它们组成一个联合类型。 // 例如,假设你有这样一个类型: type Person { firstName: string; lastName: string; age: n…...

Centos 7 更改 PostgreSQL 14 默认存储路径

前言: 默认PostgreSQL数据存储路径为:/var/lib/pgsql/14/data 迁移到新的存储路径:/mnt/postgresql/data 1、关闭PostgreSQL服务 systemctl stop postgresql-142、创建目录 # 创建新目录 mkdir -p /mnt/postgresql/data# 更改目录权限 chow…...

深信服超融合一体机提示:内存ECC

PS:此事件分享主要来源于季度巡检时发现的超融合一体机红灯闪烁异常,接入IPMI端口查看日志发现持续提示内存ECC; 因为是只有3.05这一天发现了有这个告警的提示,所以当时清除了日志以后重启了BMC服务就解决了;但是如果清…...

STK Components 二次开发-地面站传感器

上一篇我们说了创建地面站,那么这次我们在地面站添加一些特效。 1. 创建地面站 var locationPoint1 new PointCartographic(m_earth, new Cartographic(Trig.DegreesToRadians(117.17066), Trig.DegreesToRadians(31.84056), 240.359)); m_facility new Platfor…...

基于springboot校园车辆管理系统

背景 伴随着社会经济的快速发展,机动车保有量不断增加。不断提高的大众生活水平以及人们不断增长的自主出行需求,人们对汽车的 依赖性在不断增强。汽车已经发展成为公众日常出行的一种重要的交通工具。在如此形势下,高校校园内的机动车数量也…...

通用电气调查网络攻击和数据盗窃指控

通用电气正在调查有关威胁行为者在网络攻击中破坏了公司开发环境并泄露据称被盗数据的指控。 通用电气 (GE) 是一家美国跨国公司,业务涉及电力、可再生能源和航空航天行业。 本月早些时候,一个名为 IntelBroker 的威胁行为者试图在黑客论坛上以 500 美…...

2023亚太赛数学建模A题:采果机器人的图像识别技术思路模型代码

亚太A题:采果机器人的图像识别技术 A题完整思路获取 :获取见文末名片,第一时间更新 中国是世界上最大的苹果生产国,年产量约为3500万吨。与此同时,中国也是世 界上最大的苹果出口国,全球每两个苹果中就有…...

C++ 协程

经典协程辅助入门代码: typedef cotask::task my_task_t; int main() { // create a task using factory function [with lambda expression] my_task_t::ptr_t task my_task_t::create([]() { //创建协程 std::cout ()->get_id() cotask::this_task::get…...

Flutter学习(六)EventBus的使用

背景 项目开发过程中,有些场景,需要跨页面进行数据传递。按照安卓开发的思路,在flutter实现一个事件总线EventBus,进行数据传递 原理 通过dart的签名函数,进行监听集合设置,然后post分发的时候&#xff…...

Linux系统---僵尸进程、孤儿进程

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C/C》 键盘敲烂,年薪百万! 有了上一篇博客的学习,我们已经简单了解了进程的基础知识,今天我们再来学习两个特殊的进程,僵尸进程和孤儿进程。 …...

SpringBoot中如何优雅地使用重试

1 缘起 项目中使用了第三方的服务, 第三方服务偶尔会出现不稳定、连接不上的情况, 于是,在调用时为了保证服务的相对高可用,添加了超时连接重试, 当连接第三方服务超时时,多重试几次,比如3次&a…...

数据库日志解析:深入了解MySQL中的各类日志

**> 🎏:你只管努力,剩下的交给时间 🏠 :小破站 数据库日志解析:深入了解MySQL中的各类日志 前言第一:错误日志❌1. 错误日志的作用2. 记录内容3. 故障排查的方法 第二:查询日志1.…...

操作系统题目分类总结 | 进程管理 内存管理 文件系统 设备管理

系列文章如下 学习过程中一定要有系统观念(知识框架,每一章开头都会有一个思维导图),知道目前自己在学习的是哪一板块的内容,和前面有什么样的联系 操作系统的很多知识点前后都是联系非常紧密的,去一点一…...

数据结构——单链表(Singly Linked List)

1.链表介绍 链表是一种物理储存上非连续、非顺序的存储结构。数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。 对于上图,每一个结点都是一个结…...

# 发散创新:基于Python实现轻量级物理引擎的核心算法与实战优化在游戏开发、虚拟仿真和机

发散创新:基于Python实现轻量级物理引擎的核心算法与实战优化 在游戏开发、虚拟仿真和机器人控制等领域,物理引擎是构建真实感交互体验的关键组件。本文将带你从零开始用 Python NumPy 实现一个简化但功能完整的 2D 物理引擎原型,并深入剖析…...

HarmonyOS PC 命令行工具构建框架

欢迎大家一起共建 HarmonyOS PC 生态! 🚀 欢迎加入开源鸿蒙PC社区:https://harmonypc.csdn.net/ 目录 概述环境准备 Windows 环境(WSL)Linux 环境(Ubuntu 22.04)macOS 环境 快速开始详细步骤…...

【GISBox实战教程】零基础掌握影像切片技巧,轻松实现多平台服务发布

1. 影像数据基础:从概念到应用场景 第一次接触影像数据这个概念时,我也被各种专业术语搞得一头雾水。简单来说,影像数据就是地球表面的"照片",只不过这些照片是用专业设备拍摄的,包含了丰富的地理信息。最常…...

2279 上市公司跨国供应链【存续力】(Sustainability) 指标(2004.07-2026.02)

数据简介测度微观合作黏性与“沉没成本”的度量衡 存续力(Sustainability)衡量了一段供需关系在走向彻底“死亡”之前,曾经拥有过的生命长度。在国际贸易网络中,存续时间的长短反映了中外企业间的合作黏性、技术锁定效应和信任深度…...

简报:2026年3月具身智能机器人融资情况

2026年3月,国内具身智能机器人赛道迎来融资热潮,在政策东风产业加速的双重驱动下,融资数量、金额、单笔规模均创历史新高,呈现出“大额融资密集、头部效应凸显、全产业链覆盖” 的爆发态势。具身人工智能(E-AI&#xf…...

空气质量指数背后的科学:从污染物浓度到健康影响的完整解读

空气质量指数背后的科学:从污染物浓度到健康影响的完整解读 清晨推开窗户,你是否曾因灰蒙蒙的天空而犹豫今天的晨跑计划?天气预报中那个看似简单的AQI数值,实则凝结了环境科学家们数十年的研究成果。这个介于0到500之间的数字&am…...

Redis命令处理机制源码探究潘

一、项目背景与核心价值 1. 解决的核心痛点 Navicat的数据库连接密码并非明文存储,而是通过AES算法加密后写入.ncx格式的XML配置文件中。一旦用户忘记密码,常规方式只能重新配置连接,效率极低。本项目只作为学习研究使用,不做其他…...

PMSM滑模控制仿真优化:无位置传感器永磁电机文档分享,包括界面调整、波形记录与程序内部原理解析

PMSM滑模控制仿真无位置 永磁电机 可提供文档if启动 如果没有收敛,将1e-4搞小一点 e-6或者e-5试下 本次滑模模型文档包括: 1 simulink界面调整,由于使用这个仿真的时候很可能会出现因为软件环境不同导致无法使用, 或者导致的波形错…...

小白也能懂!Agent如何“看见”并操作电脑?收藏这份操作指南

本文深入浅出地解析了Agent操作电脑的原理,核心在于将电脑界面转化为可观察的输入,通过点击、输入等工具执行“观察—决策—执行—再观察”的循环任务。文章拆解了Agent如何“看见”屏幕、将目标转化为具体动作、执行动作并判断结果等关键问题&#xff0…...

3步掌握微信数据解密:本地安全解密方案的终极指南

3步掌握微信数据解密:本地安全解密方案的终极指南 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 当微信聊天记录被加密存储在数据库中,你是否曾感到束手无策?那些珍贵…...