【JavaScript】下载文件 Blob 流数据函数封装和使用

使用blob 实现 js下载word、Excel等文件 我之前有写过一篇就关于vue下载文件的,那个是很好用,但那个是基于我项目中是比较合适的,但实际上,项目中还有一个方法就是使用js中Blob,这个是什么那,其实无论是fetch还是axios都有提供Blob的功能,这个就是把后端返回来的数据文本或者二进制流的数据,转换成字节,返回成一个新的blob对象,再去进行下载。 代码示例: this.$api.Business.download({}, res => { // 我这个是下载的word文档,第二个参数会这样写的 cons 阅读详情

1.请求设置请配置 responseType: 'blob'

export function xxx(id) {
  return request({
    url: `xxx?id=${id}`,
    method: 'get',
    responseType: 'blob'
  })
}

2.通过 res.headers['content-disposition'] 获取文件名,也可以自定义,记得加上 .后缀

const filename = res.headers['content-disposition'].split('=')[2].replace(/['\']/g, '').split('"')[1] 
// 具体根据你后台返回的数据获取,不固定

3.下载,将获取到的 blob 流数据和 filename 传入就可以了

/**
 * 下载 blob 流数据
 * @param {*} data 流数据
 * @param {*} fileName
 */
export function downloadBlob(data, fileName) {
  // 1.解析 blob 数据 生成 url
  const blob = new Blob([data])
  const url = window.URL.createObjectURL(blob)
  // 2.创建下载链接+自动下载
  const link = document.createElement('a')
  link.href = url
  link.download = fileName
  document.body.appendChild(link)
  link.click()
  window.URL.revokeObjectURL(link)
}

大家可以参考网上更详细的的 blob 下载配置,我也是参考网上的,我这个函数一般文件下载经过做公司项目测试目前是没问题。

使用Blob实现文件下载 大家都知道 a 标签是超链接,点击会跳转至 href 指定的地址。 当我们给 a 标签加上 download 属性后,则会去 href 指定的url下载文件(这里一定是同源的) new Blob() 存放二进制资源 window.URL.createObjectURL() 会将 Blob存放的二进制资源转为url地址,如此而已 思路 : 1. 首先通过 document.createElement('a') 创建一个a标签 用 link 来接受 2. 通过 link.setAttri.. 阅读详情

相关推荐

【高等数值分析】Krylov子空间方法

文章目录1. 预备理论1.1 Krylov 子空间1.2 最佳逼近1.2.1 方法一:最佳平方逼近1.2.2 方法二:假设 AAA 对称正定1.2.3 方法三:残差2范数2. 基底正交化2.1 Arnoldi 过程(CGS)2.2 改进 Arnoldi 过程(MGS)2.3 Lanczos过程3. 方程组求解3.1 全正交方法 (FOM)3.2 D-Lanczos方法3.3 广义极小残量法(GMRES)3.4 MINRES 方法 1. 预备理论 现在需要求解一个大规模稀疏方程组 Ax=bAx=bAx=b,可

Glooow的博客 1万+

JS 下载文件两种方式总结

后端返回Blob对象(文件流),完成导出、下载功能: 1.介绍Blob Blob Blob对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成ReadableStream来用于数据操作。 JS 下载文件 下载文件分为两种形式,哪两种方式取决于后台; 如果后台服务器的静态目录有可供下载的静态资源,后台人员告知你文件路径,直接window.location.href方式获取即可; 如果后台服务器无可供下载的静态资源,返回的是一个文件流(resp...

Future1994的博客 1万+

BMC的风扇控制 (Fan speed control)

这篇文章是我刚开始做风扇功能的时候写的,因为那时候都找不到主管要我报告的内容,所以报告完就顺便整理一下,最近因为在修控制学,之后应该会再补一篇和控制学相关的内容 (如果有空的话) BMC的风扇控制算一个蛮重要的功能,那这个功能包含了"TACH"和"PWM"这两个常用讯号怎么解读,还有最常用的控制演算法"PID(closed loop)"和"Stepwise(openloop)",而另外的Error control ,因为每家做法不同,就不会在这边作介绍 ##实作程式码是来自Facebook的openBM

yeiris的博客 1万+

js将后端返回的blob请求下载

【代码】js将后端返回的blob请求下载。

Mr-yang的随笔 849

矢量量化的基本原理:高效数据压缩与信息检索的关键矢量量化(Vector Quantization,简称VQ)是一种数据压缩和信

此外,在矢量量化过程中,可能会引入一定的信息损失,对一些精细特征的表示可能存在一定的误差。它通过将高维数据映射到低维码本空间中,并将相似的数据映射到相同的码本向量中,实现对数据的高效表示和存储。最重要的是,矢量量化可以用于数据的检索和分析,提供了高效的数据查询和处理手段。通过使用码本索引,我们可以高效地存储和检索大量的数据。在图像处理中,矢量量化可以用于图像压缩,将复杂的图像数据转化为较少的码字,实现图像的存储和传输。矢量量化通过将连续的高维数据分割并映射到有限的码本集合中,实现数据的离散表示和压缩。

m0_70886513的博客 1372

Rapid SCADA MQTT

一、配置RapidSCADA 1、准备KpMqtt.dll、Jint.dll库文件,从网盘下载。 2、将以上两个文件拷贝到SCADA安装目录的Comm/KP目录下,如下: C:\SCADA\ScadaComm\KP 3、新建SCADA项目 4、新建Line 5、新建Device 6、拷贝Config目录下的KpMqtt_001.xml文件、KpMqtt_Job.js文件到项目Comm\Config下,如下示例链接 C:\SCADA\Projects\MQTTProject\Instances\Defau

mumanquan1的博客 3007

js 通过blob实现下载文件

知识点:Blob,window.URL.createObjectURL<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title></head>&l

大G的博客 2万+

掌握SiOME:从零构建OPC UA信息模型的完整指南

本文是掌握SiOME工具的完整指南,详细介绍了如何利用这款免费且强大的OPC UA建模工具,从零开始构建信息模型。内容涵盖从获取软件、创建命名空间、定义对象类型与变量,到添加方法、生成XML文件,并最终将其集成到开源的open62541服务器中。通过可视化建模,开发者可以高效、准确地设计复杂模型,大幅提升工业物联网与自动化项目的开发效率。

tcp8optimizer的博客 515

js实现下载blob对象

当后端接口返回blob对象,前端需要转成文件并下载时,可以使用此方法 // blob转文件并下载 downloadFileByBlob(blob, fileName = "file") { let blobUrl = window.URL.createObjectURL(blob) let link = document.createElement('a') link.download = fileName || 'defaultName' link.style.display = 'non

zxw的博客 5901

初学者入门YOLO目标检测:从懵圈到上手,这篇文章讲透所有核心(附学习路径+避坑指南)

目标:比如训练一个“检测苹果和橘子”的模型,或者“检测人脸”的模型;任务:学会用LabelImg标注数据,制作YOLO格式的数据集,用命令行训练模型;关键:不用追求高精度,能训练出一个能检测出目标的模型就行。很多初学者卡在入门阶段,不是因为智商不够,而是因为“想太多,做太少”——总觉得要把所有原理搞懂才能动手,结果越想越怕,最后放弃。先动手,再动脑。先跑通一个案例,获得成就感;再制作自定义数据集,训练简单模型;最后再回头去理解原理,优化模型。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 688

机器学习(十九):梯度提升回归(GBR)

机器学习中的梯度提升回归算法原理与案例实战。

全栈川川 5156

js下载流文件(blob)

js export function 方法名(params) { return axios({ url: api. 方法名, method: 'post', data: params, responseType: 'blob' }) } // 下载 [方法名](state, data) { console.log(state) console.log(data)

weixin_43923202的博客 1324

深度强化Q学习-基于微软AirSim仿真环境的自动驾驶案例(原理代码详解简易可行)

最近在学习《强化学习原理与Python实现》,肖智清著。参考第十二章的自动驾驶案例,写一篇总结,尽量做到简单可行,让有志于自动驾驶的小伙伴可以通过此篇博客可以管中窥豹,初步了解自动驾驶的强化学习训练过程。 本篇将自动驾驶问题转化为回合制的强化学习任务,设计以车辆观察图像和运行状态为输入的自动驾驶算法,并在AirSim仿真环境中进行训练和测试。本篇使用带经验回放和目标网络的基于深度Q网络算法设计并实现智能体,对经验回放、目标网络和深度Q学习算法进行简单介绍,并用代码实现。

shao918516的博客 8599

JavaScript 14种方法可以实现文件下载

接下来,创建一个下载链接,将 Blob URL 分配给链接的 href 属性,设置文件名以及其他选项,最后触发点击链接进行下载。只需调用相应的下载函数,并传入文件的 URL 和文件名,即可下载文件。然后,将 Blob URL 分配给下载链接的 href 属性,从而实现文件下载。它首先使用 fetch API 获取文件的二进制数据,并将其封装为 Blob 对象,然后调用 saveAs() 函数来触发文件下载。你可以通过在服务器端生成文件,并将用户重定向到该文件的 URL 来实现文件下载。函数来实现文件下载。

代码炼金术 3万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

vue中使用文件流进行下载(new Blob)

封装方法 function getExel(url, params, index) {+ return new Promise(function(resolve, reject) { let data = { method: "GET", url:url, headers: { 'token': gettoken("token"...

qq_37899792的博客 5万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

JS实现Blob文件流下载

JS实现文件下载,通过Blob实现二进制文件流下载

qq_43651168的博客 8858

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

js 通过url 转blob下载文件

js 通过url 转blob下载文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,

weixin_44234050的博客 5965

blob对象实现文件下载

有时候公司或者我们自己想要通过文件流的形式下载文件,或者我们想将某些数据以某种文件格式下载下来。blob是个不错的选择。 基本上所有的文件都能生成。

stc_ljc的博客 13万+

blob对象实现文件下载_blob文件下载

有时候公司或者我们自己想要通过文件流的形式下载文件,或者我们想将某些数据以某种文件格式下载下来。blob是个不错的选择。基本上所有的文件都能生成。

2401_84418883的博客 860

Js:Blob、ArrayBuffer、FileReader、URL、Image、关于文件下载的方法案例

目录概括1. 基本概念1.1 Blob:存储二进制文件的“容器”。不可变。1.2 File:File接口基于Blob1.3 ArrayBuffer :表示原始的二进制数据缓冲区1.4 FileReader:异步文件读取,可进行文件类型转换1.5 URL.createObjectURL():file转成url1.6 new Image():生成一个尚未被插入 DOM 树中的 img标签2. 基本功能2.1 Blob、File可实现的功能2.2 ArrayBuffer可实现的功能2.3 Blob(File)和A

Litt_White的博客 6118

Blob 学习指南:从零开始学习 JavaScript Blob 对象的使用

当我们在处理前端开发任务时,经常会涉及到处理各种类型的数据,如文本、图片、音视频等。而 JavaScript 中的 Blob 对象提供了一种便捷的方式来操作和处理这些数据。Blob 对象可以将不同类型的数据进行封装,并提供了一系列方法和属性,使得我们能够轻松地对数据进行处理和传输。在本篇文章中,我们将从 Blob 对象的基本概念开始,到如何使用 Blob 对象处理文件,以及如何创建和销毁 Blob URL,我们将对 Blob 对象有一个全方位的认识。

前端梦工厂 2176

VUE3+TS中实现blob文件流下载功能

VUE3+TS中实现blob文件流下载功能

weixin_73610394的博客 2047

js使用Blob的方式实现excel表格的下载(流文件下载)

js使用Blob的方式实现excel表格的下载(流文件下载) js前端下载工具 getToken 为了获取token, 不需要的可以去除 downLoadXlsx中的data, 是数据的搜索参数(根据参数搜索出的结果进行导出), 不需要搜索参数的可以去除data import axios from 'axios' import { getToken } from '@/utils/auth' const mimeMap = { xlsx: 'application/vnd.openxmlform

Radish 1万+

前端必备技能知识:JS导出Blob流文件为Excel表格、Vue.js使用Blob的方式实现excel表格的下载(流文件下载)

效果: 重点: a.download = '基础词库模板.xls'//这里最重要。如果不加后缀。保存的文件就会异常或者乱码。一定要写文件后缀类型 /** * 基础词库Excel导出、下载基础模板 */ exportBasicsLexiconExcel(){ this.$api .exportBasicsLexiconExcel() .then(res => { cons...

南北极之间 5192

angular blob使用请求下载文件

需求: 我需要模拟点击下载文件,因为后台会返回两种数据。 1、blob 里面是excel(流) 2、blob里面是json(流),如果生成文件异常的话 思考: 1、区分返回的数据类型 2、分别进行流读取 实现: 区分返回的类型 因为我后台返回json流的时候,会设置请求头是json格式。所以就可以跟正常的文件下载流区分开。根据响应头区分。 resp.type == 'application/json' 代码实现后续功能 常规的绑定点击事件 <button nz-butto

if_smile的博客 1219
上一篇: 【Element】组件 el-upload 上传文件
下一篇: 【Node】报错:core-js@2.6.12: core-js@<3.3 is no longer maintained and not recommended...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值