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

前端通过new Blob下载文档流(下载zip或excel)

当后端返回这样的预览:

前端该如何下载呢?首先在axios请求里,加入第三个参数{ responseType: ‘blob’ }。

proxy.$post(url, params, { responseType: 'blob' }).then((res)=>{downloadFormat(res)
});

然后在一个函数里处理返回,创建a标签来下载

// 这里是下载zip文件的处理const downloadFormat = (res) => {if (!res.data) {return;}let stringName = res.headers['content-disposition'].split(';')[1];// 一般来说,文件名字后端都在返回头里,前后端可以约定文件名前用 @ 符号分隔,便于取值,用其他符号也可以。let fileName = stringName.split('=')[1];// 获取到了后缀名const blob = new Blob([res.data], { type: 'application/zip' }); // application/zip就是设置下载类型,需要设置什么类型可在标题二处查看,const url = window.URL.createObjectURL(blob); // 设置路径const link = window.document.createElement('a'); // 创建a标签link.href = url;link.setAttribute('download', fileName); // 给下载后的文件命名link.style.display = 'none';link.click();URL.revokeObjectURL(url); // 释放内存
}// 这里是下载excel的处理, 可根据需要传文件名和文件类型const downloadFormat = (res, fileName, fileType) => {let stringName = res.headers['content-disposition'].split(';')[1];let fileName = stringName.split('=')[1];const blob = new Blob([res.data], { type: fileType ?? 'application/vnd.ms-excel' });// application/vnd.ms-excel 表示.xls文件// application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 表示.xlsx文件// 也可以不写type,反正是下载,又不是上传。if (!blob) {return;}const url = window.URL.createObjectURL(blob);const link = document.createElement('a');link.style.display = 'none';link.href = url;link.setAttribute('download', fileName);document.body.appendChild(link);link.click();window.URL.revokeObjectURL(url); // 为了性能和内存使用状况,应该在适当的时候释放url
}

还有一种get方式通过window.location.href来下载文件,在浏览器F12网络里预览和响应没有返回值,写法如下

window.location.href = '/api/exportData?ids=' + 拼接的参数其中/api被代理转发了,在vite.config.js文件里config.server.proxy对象配置如下:"/api": {target: "https://test.XXX.net",secure: false,changeOrigin: true,
}// 真实请求地址含api,并未被reWrite为空

相关文章:

前端通过new Blob下载文档流(下载zip或excel)

当后端返回这样的预览: 前端该如何下载呢?首先在axios请求里,加入第三个参数{ responseType: ‘blob’ }。 proxy.$post(url, params, { responseType: blob }).then((res)>{downloadFormat(res) });然后在一个函数里处理返回&#xff0c…...

R 常用的内置软件包及功能介绍

R 中有许多内置包,提供了丰富的功能来帮助用户进行数据分析、统计建模、图形可视化等任务。以下是一些常用的内置包及其功能简介: 1. stats 包 stats 是 R 的一个核心包,几乎每个 R 用户都会使用它。它包含了许多统计分析的函数&#xff0c…...

基于 HC_SR04的超声波测距数码管显示(智能小车超声波避障部分)

超声波测距模块HC-SR04 1、产品特色 ①典型工作用电压:5V ②超小静态工作电流:小于 5mA ③感应角度(R3 电阻越大,增益越高,探测角度越大): R3 电阻为 392,不大于 15 度 R3 电阻为 472, 不大于 30 度 ④探测距离(R3 电阻可调节增益,即调节探测…...

12月第十九讲:Redis应用Redis相关解决方案

1.数据库与缓存一致性方案 2.热key探测系统处理热key问题 3.缓存大value监控和切分处理方案 4.Redis内存不足强制回收监控告警方案 5.Redis集群缓存雪崩自动探测 限流降级方案 6.缓存击穿的解决方法 线上Redis比较严重的问题排序是:数据库和缓存一致性、热key…...

solon 集成 activemq-client (sdk)

原始状态的 activemq-client sdk 集成非常方便&#xff0c;也更适合定制。就是有些同学&#xff0c;可能对原始接口会比较陌生&#xff0c;会希望有个具体的示例。 <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-client&l…...

STM32-笔记7-继电器定时开闭

1、复制02项目&#xff0c;重命名08-继电器定时开闭 打开项目工程 在\Drivers\BSP\该路径下&#xff0c;新建alarm文件夹&#xff0c;该文件夹下里面包含alarm.c和alarm.h文件 加载进该项目中 为什么这里使用的是 这个单词&#xff0c;而不是继电器&#xff08;relay&#…...

B4X编程语言:B4X的映射(数据地图Map)详解

B4X的映射(Map)是由多个键值对组成的数据集合&#xff0c;也称为数据地图。它和列表一样也是一个非可视化的数据容器&#xff0c;在B4X中作为变量使用&#xff0c;用于在单个变量下存储多个键值对。 映射中的键是唯一的。 这意味着&#xff0c;如果您添加了一个键/值对…...

windows C++ 判断文件大小,清空文件,写日志

windows C 判断文件大小&#xff0c;清空文件&#xff0c;写日志等几个常见的接口&#xff0c;记录一下备忘 #include <iostream> #include <vector> #include<Windows.h> #include<string> #include <iostream> #include <sys/types.h> …...

用Python设置Excel工作表的页眉和页脚

在处理和分析数据时&#xff0c;Excel作为一款功能强大的工具&#xff0c;被广泛应用于各个领域。当涉及到打印或分享工作表时&#xff0c;为文档添加专业的页眉和页脚不仅能提升文件的视觉效果&#xff0c;还能提供必要的信息&#xff0c;例如公司标识、日期、文件名或是页码等…...

electron-vite【实战】自定义标题栏【组件封装】(含异形标题栏,指定区域拖拽,窗口置顶,窗口最小化,窗口最大化,取消最大化,隐藏窗口到托盘等)

效果预览 技术要点 透明背景 src/main/index.ts 的 new BrowserWindow 中添加 transparent: true, // 设置窗口背景透明frame: false, // 隐藏窗口边框仅图标和标题部分可拖拽 仅图标和标题部分添加样式 drag .drag {-webkit-app-region: drag; }图标与标题栏的融合 标题栏的…...

MySQL复制问题和解决

目录 环境介绍 一&#xff0c;主库执行delete&#xff0c;从库没有该数据 模拟故障 修复故障 二&#xff0c;主库执行insert&#xff0c;从库已存在该数据 模拟故障 故障恢复 三&#xff0c;主库执行update&#xff0c;从库没有该数据 模拟故障 故障恢复 四&#xf…...

Spark和Hive的区别

1 、 Hive Hive 是基于 Hadoop 的数据仓库工具&#xff0c;同时又是查询引擎&#xff0c; Spark SQL 只是取代的 Hive 的查询引擎这一部分&#xff0c;企业可以使用HiveSpark SQL 进行开发。 Hive 的主要工作如下&#xff1a; 把HQL 翻译长 map-reduce 的代码&#xff0c;并…...

Type-C 接口电热毯:开启温暖智能新时代

在当今科技迅猛发展的时代&#xff0c;智能家居产品如同璀璨繁星般点缀着我们的生活&#xff0c;从智能灯光的温馨到温控系统的精准&#xff0c;处处都彰显着科技赋予生活的便捷与舒适。而在这股追求高效与智能化的洪流之中&#xff0c;一款极具创新的电热毯——Type-C 接口电热…...

React 19新特性探索:提升性能与开发者体验

React作为最受欢迎的JavaScript库之一&#xff0c;不断推出新版本以应对日益复杂的应用需求。React 19作为最新的版本&#xff0c;引入了一系列令人兴奋的新特性和改进&#xff0c;旨在进一步提升应用的性能、开发效率和用户体验。 本文将深入探讨React 19的新特性&#xff0c;…...

【数据库】SQL语句基础

【数据库】SQL语句基础 文章目录 【数据库】SQL语句基础一、SQL与数据库二、 SQL语句类型2.1 数据定义语言&#xff08;DDL&#xff09;1. 创建数据库&#xff1a;CREATE DATABASE2. 创建表&#xff1a;CREATE TABLE3. 删除表&#xff1a;DROP TABLE4. 修改表结构&#xff1a;A…...

性能】JDK和Jmeter的安装与配置

一、JDK环境配置 1. 下载JDK 官网下载地址&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html 选择对应系统的安装包&#xff0c;下载后安装&#xff0c;安装中记录JDK安装的地址&#xff0c;之后一直点击下一…...

Hadoop、Hbase使用Snappy压缩

1. 前期准备 系统环境&#xff1a;centos7.9 配置信息&#xff1a;8C8G100G hadoop和hbase为单节点部署模式 jdk版本jdk1.8.0_361 1.1. 修改系统时间 timedatectl set-timezone <TimeZone> 1.2. 修改主机名以及主机名和IP的映射 vim /etc/hosts #将自己的主机名以及…...

初试Docker

1. 查看版本 docker --version2. 拉取镜像并查看当前存在的镜像 docker pull hello-world查看是否成功拉取到docker docker images在Docker Desktop 可视化查看 3. 删除镜像 docker rmi xxx4. 启动容器 以下命令使用 mysql镜像启动一个容器&#xff0c;参数为以命令行模…...

【Rust自学】4.5. 切片(Slice)

4.5.0. 写在正文之前 这是第四章的最后一篇文章了&#xff0c;在这里也顺便对这章做一个总结&#xff1a; 所有权、借用和切片的概念确保 Rust 程序在编译时的内存安全。 Rust语言让程序员能够以与其他系统编程语言相同的方式控制内存使用情况&#xff0c;但是当数据所有者超…...

番外:ubuntu 下的sqlite3

What Is SQLite? SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. SQLite is the most used database engine in the world ps:SQLite Home Page sqlite3 的安装&#xff1a; user…...

全脐点曲面当且仅当平面或者球面的一部分

S 是全脐点曲面当且仅当 S 是平面或者球面的一部分。 S_\text{ 是全脐点曲面当且仅当 }{S_\text{ 是平面或者球面的一部分。}} S 是全脐点曲面当且仅当 ​S 是平面或者球面的一部分。​ 证&#xff1a; 充分性显然&#xff0c;下证必要性。 若 r ( u , v ) r(u,v) r(u,v)是…...

Vue之版本演进

一、引言 Vue.js&#xff0c;发音为 /vjuː/&#xff0c;是一款轻量级的用于构建用户界面的渐进式JavaScript框架。自2014年由前Google工程师尤雨溪&#xff08;Evan You&#xff09;发布以来&#xff0c;Vue.js凭借其简洁的API、灵活的组件系统以及高效的性能&#xff0c;迅速…...

四川托普信息技术职业学院教案1

四川托普信息技术职业学院教案 【计科系】 周次 第 1周&#xff0c;第1次课 备 注 章节名称 第1章 XML语言简介 引言 1.1 HTML与标记语言 1.2 XML的来源 1.3 XML的制定目标 1.4 XML概述 1.5 有了HTML了&#xff0c;为什么还要发展XML 1.5.1 HTML的缺点 1.5.2 XML的特点 1.6 X…...

《Java核心技术I》Swing中的边框

边框 BorderFactory静态方法创建边框&#xff0c;凹斜面&#xff0c;凸斜面&#xff0c;蚀刻&#xff0c;直线&#xff0c;蒙版&#xff0c;空白。 边框添加标题&#xff0c;BorderFactory.createTitledBorder 组合边框&#xff0c;BorderFactory.createCompoundBorder JCo…...

xlua中自定义lua文件加载的一种方式

此种方法来自LoxodonFramework&#xff0c;这里只做记录 定义一个LoaderBase类&#xff0c;做一个到CustomLoader的隐式类型转换 public abstract class LoaderBase {protected abstract byte[] Load(ref string fileName);/// <summary>/// 隐式类型转换&#xff0c;将…...

Suno Api V4模型无水印开发「高清音频WAV下载」 —— 「Suno Api系列」第6篇

历史文章 Suno AI API接入 - 将AI音乐接入到自己的产品中&#xff0c;支持120并发任务 Suno Api V4模型无水印开发「灵感模式」 —— 「Suno Api系列」第1篇 Suno Api V4模型无水印开发「自定义模式」 —— 「Suno Api系列」第2篇 Suno Api V4模型无水印开发「AI生成歌词」…...

EE308FZ_Sixth Assignment_Beta Sprint_Sprint Essay1

AssignmentBeta SprintCourseEE308FZ[A] — Software EngineeringClass Link2401_MU_SE_FZURequirementsSixth Assignment——Beta SprintTeam NameFZUGOObjectiveSprint Essay 1_Day1-Day2 (12.11-12.12)Other Reference1. WeChat Mini Program Design Guide 2. Javascript St…...

github如何给本机绑定 ssh密钥(MACOS)

生成 SSH 密钥 如果没有现成的密钥&#xff0c;执行以下命令来生成一个新的 SSH 密钥&#xff1a; ssh-keygen -t rsa -b 4096 -C "替换为你的邮箱" 添加 SSH 密钥到 SSH 代理 在终端中运行以下命令&#xff0c;启动 SSH 代理&#xff1a; eval "$(ssh-agen…...

使用Python实现基于AR的教育应用:打破课堂的墙壁

友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…...

【数据分析】层次贝叶斯

文章目录 一、 贝叶斯推理二、 层次贝叶斯模型三、 层次贝叶斯的特点四、 数学表述五、推断方法六、应用领域 层次贝叶斯&#xff08;Hierarchical Bayesian&#xff09;方法是一种基于贝叶斯推理的统计模型&#xff0c;用于处理具有多个层次结构的数据模型。 它允许我们在同一…...

linux top命令刷新速度的原理

top命令刷新速度的原理 top命令默认会按照一定的时间间隔&#xff08;通常是3秒&#xff09;更新系统资源使用情况的显示内容。它通过读取系统的/proc文件系统中的相关文件&#xff08;如/proc/stat用于CPU信息、/proc/meminfo用于内存信息等&#xff09;来获取最新的进程和资源…...

bestphp‘s revenge

bestphp’s revenge 知识点 php session反序列化 解题 <?php highlight_file(__FILE__); $b implode; call_user_func($_GET[f], $_POST); //参数二的位置固定为 $_POST 数组&#xff0c;我们很容易便想到利用 extract 函数进行变量覆盖&#xff0c;以便配合后续利用…...

中化信息与枫清科技深化合作:共探“AI+”产业新生态

随着数字化转型的浪潮席卷全球&#xff0c;数据已成为推动创新和经济增长的关键力量。为持续深化数据要素价值挖掘与应用实践&#xff0c;推动打造行业交流平台&#xff0c;驱动产业创新共荣&#xff0c;2024 年 12 月 18 日 -19 日&#xff0c;由中国通信标准化协会主办的“20…...

Java性能测试Benchmark使用总结

如何测量Java代码的性能 在 Java 中&#xff0c;可以使用多种方法来测量一段代码的执行性能。使用 System.currentTimeMillis()是最常见的方法 long startTime System.currentTimeMillis();// 需要测量的代码块 for (int i 0; i < 1000000; i) {// 示例代码 }long endTi…...

完整微服务设计 功能实现

我们将以一个简单的电商系统为例&#xff0c;实现微服务架构&#xff0c;逐步用Java代码详细实现每个模块&#xff0c;并配合注释帮助小白理解。在这个实现中&#xff0c;我们使用以下工具和框架&#xff1a; Spring Boot&#xff1a;用于构建微服务。Spring Cloud&#xff1a…...

【Java基础面试题025】什么是Java的Integer缓存池?

回答重点 Java的Integer缓存池&#xff08;Integer Cache&#xff09;是为了提升性能和节省内存。根据实践发现大部分的数据操作都集中在值比较小的范围&#xff0c;因此缓存这些对象可以减少内存分配和垃圾回收的负担&#xff0c;提升性能 在 -128到127范围内的Integer对象会…...

道可云人工智能元宇宙每日资讯|浙江工商大学发布“人工智能时代创新型人才培养行动计划”

道可云元宇宙每日简报&#xff08;2024年12月20日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 浙江工商大学发布“人工智能时代创新型人才培养行动计划” 12月18日&#xff0c;浙江工商大学发布了《人工智能时代创新型人才培养行动计划》&#xff0c;提出人工…...

树莓派4B 搭建openwrt内置超多插件docker,nas等等使用教程

刷入固件 (想要固件的加我vx wyy7293) bleachwrt-plus-20241112-bcm27xx-bcm2711-rpi-4-squashfs-factory.img上电,并且把网线两头分别插在pi网口上和电脑的网口上(电脑必须断网) 等待网口灯亮,进入192.168.1.1 默认账密 root password 进入系统后更改openwrt的网关地址相关…...

excel 列名是数据表 的字段名 ,单元格的值 是数据表对应字段的值,生成sql插入语句

在 Excel 中&#xff0c;按 Alt F11 打开 VBA 编辑器。在菜单栏选择 插入 -> 模块&#xff0c;在新模块中粘贴以下代码。 VBA 代码 Sub GenerateSQLInsertStatementsToFile()Dim ws As WorksheetDim lastRow As Long, lastCol As Long, i As Long, j As LongDim sql As S…...

【Rust自学】4.3. 所有权与函数

4.3.0 写在正文之前 在学习了Rust的通用编程概念后&#xff0c;就来到了整个Rust的重中之重——所有权&#xff0c;它跟其他语言都不太一样&#xff0c;很多初学者觉得学起来很难。这个章节就旨在让初学者能够完全掌握这个特性。 本章有三小节&#xff1a; 所有权&#xff1…...

OpenShift 4 - 多云管理(2) - 配置多集群观察功能

《OpenShift / RHEL / DevSecOps 汇总目录》 本文在 OpenShift 4.17 RHACM 2.12 环境中进行验证。 文章目录 多集群观察技术架构安装多集群观察功能监控多集群的运行状态监控多集群的应用运行在被管集群监控应用运行在管理集群监控被管集群的应用运行 参考 多集群观察技术架构…...

【机器学习】机器学习的基本分类-强化学习(Reinforcement Learning, RL)

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种基于试错的方法&#xff0c;旨在通过智能体与环境的交互&#xff0c;学习能够最大化累积奖励的策略。以下是强化学习的详细介绍。 强化学习的核心概念 智能体&#xff08;Agent&#xff09; 执行动作并与环境…...

Docker 设置代理的三种方法(2024年12月19日亲自测试)

Docker 设置代理的三种方法 在 Docker 中设置代理是非常常见的需求&#xff0c;尤其是在某些需要通过代理访问外部资源的网络环境下。本文将介绍三种配置 Docker 使用代理的常见方法&#xff1a;通过 daemon.json 配置镜像加速器、通过 daemon.json 配置 HTTP/HTTPS 代理、以及…...

Pycharm配置Python开发环境

Pycharm配置Python开发环境 在之前的文章中,安装好了Pyhton和Pycharm。 打开Pycharm,如下图 配置完成之后,如下图所示:...

【信息系统项目管理师】高分论文:论信息系统项目的进度管理(一体化智能公共数据平台)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、规划进度管理2、定义活动3、排列活动顺序5、制定进度计划6、控制进度论文 2022年9月,我作为项目经理参加了XX市的一体化智能公共数据平台项目的建设工作,2022年是XX市政府数字化改革的元年,全市上下…...

Chromium CDP 开发(十):Chromium 中增加自己的Domain

1. 引言 在深入了解了 Chromium CDP&#xff08;Chrome DevTools Protocol&#xff09;的开发过程之后&#xff0c;接下来我们将探讨如何创建一个自定义的 CDP Domain。通过为特定功能创建自己的 CDP Domain&#xff0c;可以避免对已有的 CDP 进行侵入式修改&#xff0c;从而更…...

《基于 Python 的网页爬虫详细教程》

一、引言 在当今信息时代&#xff0c;从互联网上获取大量有价值的数据对于许多领域的研究和分析至关重要。网页爬虫是一种自动化程序&#xff0c;可以从网页上抓取所需的数据。Python 作为一种强大的编程语言&#xff0c;拥有丰富的库和工具&#xff0c;使得网页爬虫的开发变得…...

前端知识图谱 - JavaScript基础(变量和类型)

变量和类型 1. JavaScript 规定了几种语言类型&#xff1f; JavaScript 语言的每一个值都属于某一种数据类型&#xff0c;它规定了 7 种语言类型。语言类型广泛用于变量、函数参数、表达式、函数返回值等场合&#xff0c;根据最新的语言标准&#xff0c;这 7 种语言类型如下&…...

五十个网络安全学习项目——(九)无线网络安全分析

五十个网络安全学习项目——&#xff08;九&#xff09;无线网络安全分析 这个系列灵感来源是&#xff1a;50个网络安全项目创意&#xff1a;覆盖新手至专家级&#xff0c;本人打算把这些项目都做一遍&#xff0c;做好记录&#xff0c;也算是对自己的提升。 本文将对WAPI 协议…...

10. 考勤信息

题目描述 公司用一个字符串来表示员工的出勤信息 absent:缺勤late: 迟到leaveearly: 早退present: 正常上班 现需根据员工出勤信息&#xff0c;判断本次是否能获得出勤奖&#xff0c;能获得出勤奖的条件如下: 缺勤不超过一次&#xff0c;没有连续的迟到/早退:任意连续7次考勤&a…...