后端打包压缩包代码,前端接收响应下载

//临时工workbooks.zip文件
File zipFile = File.createTempFile("workbooks", ".zip");
ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipFile));for(..........){//临时workbook.xlsx文件,workbook写入xlsx中File tempFile = File.createTempFile(fileName, ".xlsx");try (BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(tempFile))) {workbook.write(bufferedOutputStream);}//写入zip文件中File file = tempFile;byte[] buffer = new byte[1024];try (FileInputStream fileInputStream = new FileInputStream(file)) {ZipEntry zipEntry = new ZipEntry(entryName);zipOutputStream.putNextEntry(zipEntry);int len;while ((len = fileInputStream.read(buffer)) > 0) {zipOutputStream.write(buffer, 0, len);}zipOutputStream.closeEntry();}
}
zipOutputStream.close();
//写出到客户端下载
HttpHeaders headers = new HttpHeaders();headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=workbooks.zip");InputStreamResource inputStreamResource = new InputStreamResource(new FileInputStream(zipFile));return ResponseEntity.ok().headers(headers).contentType(MediaType.APPLICATION_OCTET_STREAM).body(inputStreamResource);

客户端接收响应下载文件

axios.post(url, //自己填data,//自己填.... {responseType: 'blob'}).then((res) => {this.visible_mergeMax_modal = false;const blob = new Blob([res], { type: 'application/zip' });const url = window.URL.createObjectURL(blob);const link = document.createElement('a');link.href = url;link.setAttribute('download', 'yourfilename'+this.getCurrentDate()+'.zip');document.body.appendChild(link);link.click();window.URL.revokeObjectURL(url);document.body.removeChild(link);}).catch((error) => {console.error('Error generating and downloading ZIP:', error);
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/235614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 操作系统(Vim)

vim 编译器(相当于windows中记事本) 当在终端窗口直接运行vim命令,会出现以下截图(类似手册对vim编译器简单的介绍): vim提供三种基本工作模式: 命令模式(默认模式) 插入模式 末行模式 创建文本…

html之如何设置音频和视频?

文章目录 前言一、音频标签:audio1.audio简介2.常用属性controlsautoplayloop代码演示: 二、视频标签:video1.video2.常用的视频元素controlsautoplayloop代码演示: 总结视频元素总结音频元素总结 前言 html中插入音频和视频的方…

通信UART、I2C、SPI

内部通信UART、I2C、SPI 目录 1.UART 2.I2C 3.SPI 1.UART 全双工异步通信,有两根线发送与接收。 UART串口通信需要两个信号线来实现,一根用于串口发送,另外一根负责串口接收。 一开始高电平,然后拉低表示开始位,…

layui 树组件tree 通过API获取数据

一、简单 var treedata[];tree.render({elem: #addLeftType,id: demoId,data: treedata,showCheckbox: true,oncheck: function(obj){console.log(obj.data); // 得到当前点击的节点数据console.log(obj.checked); // 节点是否被选中console.log(obj.elem); // 得到当前节点元素…

java --- 反射

目录 一、什么是反射? 二、获取 Class对象 的三种方式 三、反射获取构造方法(Constructor) 四、反射获取成员变量(Field) 五、反射获取成员方法(Method) 一、什么是反射? 反射允…

app上架-您的应用在运行时,未同步告知权限申请的使用目的,向用户索取(相机)等权限,不符合华为应用市场审核标准。

上架提示 您的应用在运行时,未同步告知权限申请的使用目的,向用户索取(相机)等权限,不符合华为应用市场审核标准。 测试步骤:管理-添加-点击二维码,申请相机权限 修改建议:APP在调…

智能优化算法应用:基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.非洲秃鹫算法4.实验参数设定5.算法结果6.…

UE4 UE5 一直面向屏幕

一直面相屏幕,方法很简单 新建一个蓝图,如下添加组件: 蓝图如下: Rotation Actor :需要跟随镜头旋转的物体 Update:一个timeline(替代event tick 只是为了循环) Timeline&#xff…

百年东芝“瞄准”汽车「芯」机遇

在汽车“新四化”大变革的驱动下,汽车半导体市场进入需求暴涨的新周期。 “智能电动汽车所需要的半导体种类和数量正在急剧增加。” 东芝电子分立器件应用技术部经理成栋表示,东芝电子正在加大汽车半导体市场的布局,从而满足汽车电动化、智能…

深入了解Java中的锁机制

目录 1. synchronized关键字 1.1 基本概念 1.2 内置锁 1.3 限制 2. ReentrantLock 2.1 概述 2.2 公平性与非公平性 2.3 条件变量 3. 读写锁(ReadWriteLock) 3.1 概念 3.2 适用场景 4. StampedLock 4.1 概述 4.2 乐观读与悲观读 4.3 适用场…

Linux 操作系统 015-进程操作

Linux 操作系统 015-进程操作 本节关键字:Linux、进程操作、终止进程、进程树 本节相关指令:ps、pstree ps指令介绍 ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况,可以不加任何参数。 菜单栏介绍…

WT588F34B-16S语音芯片:四通道16K采样率混音播放的应用优势

随着科技的不断进步,语音芯片在电子产品中的应用越来越广泛。其中,WT588F34B-16S语音芯片凭借其卓越的性能和创新的功能,引起了市场的广泛关注。特别是其支持四通道16K采样率混音播放的功能,为实际应用带来了显著的优势。本文将深…

w13渗透测试实战之https账号密码捕抓

此次实验需要配合arp欺骗,不知道arp欺骗的,可以查看这篇w13渗透测试实战之ARP欺骗攻击(ARP断网攻击) 一、实验环境 攻击机:linux Kali 靶机:window 7 网络环境:虚拟机NAT 网关:192.168.89.2实…

Avalonia MVVM

Avalonia MVVM 是一种用于构建跨平台桌面应用程序的架构模式,它结合了 Avalonia UI 框架和 Model-View-ViewModel (MVVM) 设计模式。 以下是对 Avalonia MVVM 的各个部分的简要解释: Avalonia UI:Avalonia 是一个开源的跨平台 GUI&#xff0…

C11编写简易16位虚拟机

虚拟机 在计算领域,VM(虚拟机)是一个术语,指的是模拟/虚拟化计算机系统/架构的系统。 一般来说,虚拟机有两类: 系统虚拟机提供真实机器的完整替代品。 它们实现了足够的功能,允许操作系统在它…

MIT 6.824 练习1

Hi, there! 这是一份根据 MIT 6.824(2021) 课程的第 2 课的课堂示例代码改编的 2 个 go 语言编程练习。像其他的编程作业一样,我去除了核心部分,保留了代码框架,并编写了每一步的提示 练习代码在本文的最后面 爬虫 在第一部分,…

浅谈能耗系统在马来西亚连锁餐饮业的应用

1.背景信息 Background 针对连锁餐饮业能耗高且能源管理不合理的问题,利用计算机网络技术、通讯技术、计量控制技术等信息化技术,实现能源资源分类分项计量和能源资源运行监管功能,清晰描述各分店总的用能现状;实时监测各供电回路…

Hal深入实战/perfetto-systrace实战/SurfaceFlinger合集-安卓framework开发实战开发

背景 hi,粉丝朋友们: 大家好! 下面来介绍一下新的framework专题halperfettosurafceflinger,这个专题主要就是分为3大块,但是彼此直接又是相互关联的。 比如surfaceflingre模块深入分析需要用到hal相关的模块&#xff…

IDEA创建springboot工程

选择spring boot的版本和依赖 finish创建完成 删除无用的文件

【make/Makefile】Linux下进度条的设计与实现

一、简单介绍make/Makefile Makefile 和 makefile 不区分大小写,但是一定只能是 “makefile” !!! make 是一个指令,makefile 是一个文件。 Makefile 格式形式: 使用 make 生成目标文件时,默认…