axios配置 responseType: “blob“

ops/2024/10/18 9:17:17/

在使用 Axios 进行网络请求时,配置 responseType: "blob" 是用来指示 Axios 将响应体作为 Blob 对象处理。这在文件下载功能中特别有用,因为 Blob 对象可以被用来创建一个指向该文件内容的 URL,进而触发浏览器的下载行为或者在页面上展示文件内容(如图片预览)。下面是使用此配置的一些关键点和示例:

为什么需要设置 responseType: "blob"

  • 文件下载:当后端返回的是一个文件的二进制流(如PDF、图片、文档等),前端需要将其解析为文件并提供下载。Blob 对象能够直接处理这种二进制数据,从而实现文件的下载。

  • 处理大文件或流式数据:对于大文件或希望边下载边处理的数据,使用 Blob 可以更高效地处理数据流,避免内存溢出。

示例代码

以下是一个使用 Axios 下载文件的简单示例:

axios({url: 'your-file-url',method: 'get',responseType: 'blob', // 关键配置,指定响应类型为 Blob
}).then((response) => {// 创建一个隐藏的可下载链接const url = window.URL.createObjectURL(new Blob([response.data]));const link = document.createElement('a');link.href = url;link.setAttribute('download', 'filename.ext'); // 设置文件名document.body.appendChild(link);// 触发点击link.click();// 清理document.body.removeChild(link);window.URL.revokeObjectURL(url);
}).catch((error) => {console.error('下载文件时发生错误:', error);
});

注意事项

  • 错误处理:如果后端返回的是错误信息而不是预期的文件流,并且你已经设置了 responseType: "blob", 前端可能无法直接通过JSON.parse来解析错误信息,因为响应已经被转换成了 Blob。这种情况下,你可能需要在后端设计上确保错误信息以特定格式(例如,仍然以JSON格式但作为Blob的一部分)返回,或者在前端通过其他机制(如检查HTTP状态码)来识别和处理错误。

  • 资源管理:记得使用 URL.revokeObjectURL(url) 来释放创建的URL对象,避免内存泄漏。

通过上述配置和示例,你可以有效地利用 Axios 下载各种类型的文件,同时注意错误处理和资源管理,以保证用户体验和应用性能。


http://www.ppmy.cn/ops/39221.html

相关文章

【Excel VBA】深入探索VBScript中的Choose函数

深入探索VBScript中的Choose函数 在编程实践中,我们会遇到大量的If……ElseIf……搞得代码异常的庞大。 今天有个VBA的学生,突然问田辛老师有没有好的办法。 于是, 田辛老师发现还真有办法。 也就是Choose函数。Choose函数可以来优化代码逻辑…

第 8 章 机器人底盘Arduino端入口(自学二刷笔记)

重要参考: 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 8.4.2 底盘实现_01Arduino端入口 ros_arduino_bridge/ros_arduino_firmware/src/libraries/ROSArduinoBridge…

Spring AOP浅谈

什么是AOP? AOP是Aspect-Oriented Programming的缩写,是一种面向切面的编程方法。 在AOP中,一个切面是一组可以独立于其他代码执行的功能,如日志记录、安全性检查、事务处理等。这些功能通常被称为"通知",并…

学习java第六十六天

Spring 中的 bean 的作用域有哪些? singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。 prototype : 每次请求都会创建一个新的 bean 实例。 request : 每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效。 sessio…

学习心得:如何开始学习一款MCU

一、MCU简介 任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量、指令系统等。对于指令系统,虽然形式上看似千差万别,但实际上只是符号的不同,其所代表的含义、所要完成的功能和寻址…

Excel——项目管理,设置时间到期自动提醒及颜色高亮

效果图 第一步、自动获取合同到期日期 1、首先合同【签约日期】和【到期日期】下面的数据必须是日期格式,不能是其它的格式否则无法计算,如果是其它格式需要转换成标准的日期格式,如下图所示。 2、在“到期日期”下面的第一个单元格中输入公…

Javaweb项目搭建以及介绍

综合案例-体育商品网站 注意:本项目要求使用mysql5.0版本,否则因技术过来出现版本不兼容的问题 1 导入sql语句 先建一个名为typpsc1数据库 导入数据库 2 项目结构 2.1 导入文件 2.2 配置tomcat 删除cms自带tomcat 安装本地的tomcat 选择tomcat版本 在…

[muduo网络库]——muduo库三大核心组件之Channel类(剖析muduo网络库核心部分、设计思想)

接着上文[muduo网络库]——muduo库的Reactor模型(剖析muduo网络库核心部分、设计思想),接下来详细介绍一下这三大核心组件中的Channel类。 先回顾一下三大核心组件之间的关系。 接着我们进入正题。 Channel Channel类封装了一个 fd 、fd感兴…