文件下载输出zip文件

文件下载输出成zip文件:

1、前端整个按钮,调js方法:(参数:param,需要下载的id,用逗号拼接)

var param = "?dto.id=";//需要自己拼接param
window.location.href = "<%=basePath%>app/upload/fileAction!uploadFileToZip.do" + param;

2、java关键依赖

 <dependency><groupId>org.apache.ant</groupId><artifactId>ant</artifactId><version>1.9.6</version></dependency>

3、后端代码:

import org.apache.tools.zip.ZipEntry; //zip的关键包
import org.apache.tools.zip.ZipOutputStream;//zip的关键包@Controller
@RequestMapping("/app/upload")
public class FileAction {//下载zip文件@RequestMapping("fileAction!uploadFileToZip.do")public void uploadFileToZip() {ParamDTO dto = getDto();//页面参数,可以用自己的方法try {String[] param = dto.getAsString("id").split(",");//参数Map<String, String> m = new HashMap<String, String>();String zipName = getNowDate()+ ".zip";//zip名称,我用的是当前日期//下载压缩文件代码getResponse().reset();getResponse().setContentType("application/x-download");getResponse().setHeader("Content-Disposition", "attachment;fileName=" + new String(zipName.getBytes("GB2312"), "iso8859-1"));ZipOutputStream zipout = new ZipOutputStream(getResponse().getOutputStream());UserAccountInfo userAccountInfo = getUserAccountInfo(dto.getUserInfo());// // 获取用户信息,自己定义InputStream input = null;for (String s : param) {m.put("yvk010", s);List<Map> fjList = getDao().queryForList("vk01shenhe.queryApplyList_publish_fjxz", m);//查询需要下载的附件list,自己根据需求查询if (!ValidateUtil.isEmpty(fjList)) {Object yuf054 = fjList.get(0).get("yuf054");if (!ValidateUtil.isEmpty(yuf054)) {String filename = "未命名";//读文件//input = new ByteArrayInputStream(domains.get(0).getOrig_file());input = UcmUtil.getFile(yuf054.toString(), userAccountInfo);//去文件服务器读取文件流,自己定义byte[] buffer = new byte[input.available()];int len = input.read(buffer);if (len < 0) {}filename = (String) fjList.get(0).get("yuf052");zipout.putNextEntry(new ZipEntry(filename));//设置压缩文件内的字符编码,不然会变成乱码zipout.setEncoding("GBK");zipout.write(buffer);}}}if (input != null) {input.close();}if (zipout != null) {zipout.closeEntry();zipout.close();}} catch (Exception e) {}}//生成当前日期方法public String getNowDate(){LocalDate today = LocalDate.now(); // 获取当前日期DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 定义日期格式String formattedDate = today.format(formatter); // 格式化日期System.out.println(formattedDate); // 输出格式化后的日期return formattedDate;}
}

4、效果图:

请添加图片描述

查询数据库,循环查询去服务器查询文件流,这里就不写了,每个公司情况不一样,自己套公式!
如果文件过多,可以自己分批下载,看情况舔砖就行!

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

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

相关文章

城市分站优化系统源码:提升百度关键排名 附带完整的搭建教程

城市分站优化已成为企业网络营销的重要手段&#xff0c;今天来给大家分享一款城市分站优化系统源码。 以下是部分代码示例&#xff1a; 系统特色功能一览&#xff1a; 1.多城市分站管理&#xff1a;该系统支持多个城市分站的管理&#xff0c;用户可以根据业务需求&#xff0c;…

官网万词霸屏推广源码系统:轻松实现百度上万关键词排名在线

互联网的快速发展&#xff0c;网络营销已经成为企业推广的重要手段。在这个竞争激烈的市场中&#xff0c;如何让自己的网站在搜索引擎中获得更好的排名&#xff0c;成为众多企业关注的焦点。而万词霸屏推广源码系统正是在这样的背景下应运而生&#xff0c;为企业提供了一种全新…

【深入浅出Java性能调优】「底层技术原理体系」深入探索Java服务器性能监控Metrics框架的实现原理分析(Gauge和Histogram篇)

承接上文 承接上文中的【深度挖掘Java性能调优】「底层技术原理体系」深入探索Java服务器性能监控Metrics框架的实现原理分析&#xff08;Counter篇)&#xff0c;我们知道和了解了对应的Counter计数器的作用和实现原理&#xff0c;接下来我们需要进行分析和了解计量器&#xf…

【DB2】Maxlocks和防止锁升级

数据库在对行操作的时候&#xff0c;为了避免多个作业互相覆盖影响数据准确性&#xff0c;在进行操作&#xff08;尤其是写操作&#xff09;的时候会上锁&#xff0c;同一时间只有一个作业可以修改数值 对行上锁&#xff0c;为了记录锁的信息&#xff0c;所以会占用一定的内存…

面试题:MySQL 自增主键一定是连续的吗?

文章目录 测试环境&#xff1a;一、自增值的属性特征&#xff1a;1. 自增主键值是存储在哪的&#xff1f;2. 自增主键值的修改机制&#xff1f; 二、新增语句自增主键是如何变化的&#xff1a;三、自增主键值不连续情况&#xff1a;&#xff08;唯一主键冲突&#xff09;四、自…

uniapp:全局消息是推送,实现app在线更新,WebSocket,apk上传

全局消息是推送&#xff0c;实现app在线更新&#xff0c;WebSocket 1.在main.js中定义全局的WebSocket2.java后端建立和发送WebSocket3.通知所有用户更新 背景&#xff1a; 开发人员开发后app后打包成.apk文件&#xff0c;上传后通知厂区在线用户更新app。 那么没在线的怎么办&…

零碳、碳达峰、碳中和的概念和区别

零碳 “零碳”是一个旨在减少碳排放、减缓气候变化的全球性概念。它并不是指完全不排放二氧化碳&#xff0c;而是通过计算温室气体&#xff08;主要是二氧化碳&#xff09;排放&#xff0c;设计方案抵减“碳足迹”、减少碳排放&#xff0c;达到碳的零排放。这需要人们在社会生…

使用electron属性实现保存图片并获取图片的磁盘路径

在普通的网页开发中&#xff0c;JavaScript由于安全性的考虑&#xff0c;通常是无法直接获取到客户端的磁盘路径的。浏览器出于隐私和安全原因对此类信息进行了限制。 在浏览器环境下&#xff0c;JavaScript主要通过Web APIs来与浏览器进行交互&#xff0c;而这些API通常受到浏…

【C++】内存泄漏排查

前言 内存泄漏影响程序的稳定性运行&#xff0c;并且在程序运行过程中&#xff0c;并不会报错误&#xff0c;需要借助专用的内存泄露工具进行检测。 工具&#xff1a;CLion and AddressSanitizer #include <iostream> using namespace std;int main() {char *c new ch…

【北亚服务器数据恢复】ZFS文件系统服务器ZPOOL下线的数据恢复案例

服务器数据恢复环境&#xff1a; 服务器中有32块硬盘&#xff0c;组建了3组RAIDZ&#xff0c;部分磁盘作为热备盘。zfs文件系统。 服务器故障&#xff1a; 服务器运行中突然崩溃&#xff0c;排除断电、进水、异常操作等外部因素。工作人员将服务器重启后发现无法进入操作系统。…

Python异常总结

一 异常 当Python检测到一个错误时&#xff0c;解释器就无法继续执行了&#xff0c;反而出现了一些错误的提示&#xff0c;这就是所谓的"异常"。 print -----test--1--- open(123.txt,r) # 此处发生异常&#xff0c;程序崩溃 print -----test--2---异常需要…

IPD-PDP产品开发流程-PDT产品开发计划Charter文档模板(word)2

书接上回&#xff0c;继续为大家分享PDT的产品开发计划Charter模板的主要内容。 据华研荟了解&#xff0c;大部分国内的企业在推行IPD的时候就直接像华为一样&#xff0c;把开发计划&#xff08;任务书&#xff09;叫做Charter&#xff0c;而不翻译为中文。其实这也是一种很好…

Roary结果中有基因组丢失怎么办

Roary结果里面有基因组没在结果里出现&#xff1f;&#xff1f;&#xff01; 看看是不是结果文件夹里有一个文件夹叫fixed_input_files 如果有&#xff0c;你可以检查一下自己提交的gff文件里是不是每个不同的ORF&#xff08;可以理解为基因&#xff09;都在最后一列ID有自己独…

超图iClient3DforCesium地形、影像、模型、在线影像交互示例

超图iClient3DforCesium地形、影像、模型、在线影像交互示例 描述示例代码 描述 数据源&#xff1a;基于iserver发布的三维场景(地形、影像、BIM模型) 在线arcgis影像 应用&#xff1a;目录树展示源数据列表、目录树控制源数据可视化结果显隐、BIM模型点选查询关联属性 示例代…

水果软件2024FL Studio21.3mac苹果中文版

FL STUDIO21发布&#xff0c;提供您一直在等待的出色工作流程功能。通过新效果、多个播放列表曲目选择和无所畏惧的撤消一切编辑&#xff0c;将您的音乐带入2024年。FL Studio21中文完整版是一个功能齐全、开放式架构的PC音乐创作和制作环境。它具有基于音乐音序器的图形用户界…

详细讲解node的ws中服务端的websocket.server的各种api

WebSocket是一种在单个TCP连接上进行全双工通信的协议。Node.js中的ws模块提供了WebSocket的实现&#xff0c;使得Node.js可以轻松地创建WebSocket服务器和客户端。 在ws模块中&#xff0c;WebSocket服务器由WebSocket.Server类实现。WebSocket.Server提供了一系列的API&#…

Anolis8/centos8/龙蜥8 升级glibc 2.30

背景&#xff1a; Anolis8/centos8/龙蜥8 系统自带的glibc是2.28版本&#xff0c;已经无法满足项目需要&#xff0c;所以将glibc版本升级到2.30。 编译升级安装 wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.30.tar.gz tar -xvf glibc-2.30.tar.gz #查看glibc需要的g…

STL——list容器

目录 1.list基本概念 2.list构造函数 3.list赋值和交换 4.list大小操作 5.list插入和删除 6.list数据存取 7.list反转和排序 8.排序案例 1.list基本概念 功能&#xff1a;将数据进行链式存储。 链表&#xff08;list&#xff09;是一种物理存储单元上非连续的存储结构&…

SpringBoot-Shiro

Apache Shiro&#xff1a;https://shiro.apache.org/ 依赖 <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.4.1</version> </dependency>ShiroConfig.java Configuratio…

StringBuilder、StringBuffer

StringBuilder StringBuilder代表可变字符串对象&#xff0c;相当于是一个容器&#xff0c;它里面装的字符串是可以改变的&#xff0c;就是用来操作字符串的。好处&#xff1a;StringBuilder比String更适合做字符串的修该操作&#xff0c;效率会更高&#xff0c;代码也会更简洁…