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

设备二维码图片下载

package com.inovance.paas.tpm.infra.util;

import org.apache.commons.compress.utils.IOUtils;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class DownloadZipUtil {
public static void downloadZip(HttpServletResponse response, String sourceFolderPath, String zipName, String filePath){
// 获取文件分隔符(动态适配操作系统)
String separator = File.separator;
String zipFilePath = filePath + "zip"+ separator + zipName +".zip"; // 生成的ZIP文件路径

    FileOutputStream fos;ZipOutputStream zos;try {fos = new FileOutputStream(zipFilePath);zos = new ZipOutputStream(fos);addFolderToZip("", sourceFolderPath, zos);zos.close();fos.close();File downloadFile = new File(zipFilePath);FileInputStream inputStream = new FileInputStream(downloadFile);response.setContentType("application/zip");response.setHeader("Content-Disposition", "attachment; filename=\"" + downloadFile.getName() + "\"");IOUtils.copy(inputStream, response.getOutputStream());  // 使用IOUtils将ZIP响应给客户端inputStream.close();response.flushBuffer();doGet(response, zipFilePath, zipName);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
}private static void addFileToZip(String path, String srcFile, ZipOutputStream zip) throws IOException {File folder = new File(srcFile);if (folder.isDirectory()) {addFolderToZip(path, srcFile, zip);} else {byte[] buf = new byte[1024];int len;FileInputStream in = new FileInputStream(srcFile);zip.putNextEntry(new ZipEntry(path + "/" + folder.getName()));while ((len = in.read(buf)) > 0) {zip.write(buf, 0, len);}}
}private static void addFolderToZip(String path, String srcFolder, ZipOutputStream zip) throws IOException {File folder = new File(srcFolder);for (String fileName : folder.list()) {if (path.equals("")) {addFileToZip(folder.getName(), srcFolder + "/" + fileName, zip);} else {addFileToZip(path + "/" + folder.getName(), srcFolder + "/" + fileName, zip);}}
}protected static void doGet(HttpServletResponse response, String filePath, String zipName) throws IOException {//设置文件路径File downloadFile = new File(filePath);FileInputStream inStream = new FileInputStream(downloadFile);//设置下载的文件类型为zipresponse.setContentType("application/zip");//设置文件名,此处以zipFile.zip为例response.setHeader("Content-Disposition", "attachment; filename="+zipName+".zip");//获取输出流ServletOutputStream outputStream = response.getOutputStream();//创建缓冲区byte[] buffer = new byte[1024];int bytesRead = -1;//将文件写入输出流while ((bytesRead = inStream.read(buffer)) != -1) {outputStream.write(buffer, 0, bytesRead);}inStream.close();outputStream.flush();outputStream.close();
}

}

http://www.rkmt.cn/news/23005.html

相关文章:

  • neural network中的tensor是什么?
  • 2025年工厂维保,工厂机电维修,工厂应急维修,工厂运维服务厂家推荐排行榜,专业高效与全方位保障之选!
  • 2025/10/17
  • 有没有人坐11.1号晚上9点的火车返回衡水,大家要一起走么
  • Cursor国内用户无法使用模型(Model not avilable)解决方案
  • 2025年10月超声波清洗机厂家推荐:榜单透视与选购要点
  • 2025年混合机厂家推荐排行榜,槽型/卧式槽型/双螺旋锥形/螺杆锥形/高速/立式高速/方锥/方锥型/螺带/卧式螺带/V型/双锥/一维/一维运动/二维/二维运动/三维运动/三维混合机公司推荐
  • 2025年网络推广/网络营销/网络营销推广服务商权威推荐榜单,专业策略与高效转化口碑之选!
  • Avaloni11开发笔记
  • 题解:P12550 [UOI 2025] Reversal ABC
  • 编译安装gdb 编译安装gdb
  • 2025年10月商标注册公司推荐榜:五强对比与中立评测助您高效决策
  • 2025年发电机组厂家推荐排行榜,柴油/燃气/船用/静音箱式/移动拖车式/集装箱式/上柴/玉柴/潍柴/康明斯/沃尔沃/道依茨/帕金斯/MTU发电机组公司推荐!
  • 2025年10月敏感皮肤修复产品推荐榜:五款热门单品深度对比与客观评析
  • 题解:P7275 计树
  • mysql新建用户并授权,mysql新建用户并授权完整指南
  • CRC32的直接和反转模式
  • 2025年10月石墨电极厂家推荐榜单详解:从产线到应用看晶碳科技真实表现
  • 2025年西安买房新楼盘口碑排行榜:地建嘉信臻城领跑高端住宅市场
  • 2025年数粒机厂家推荐排行榜,防爆/新型/高速/高精度/智能/大容量/多通道/电子/视觉/全自动/低噪音/制药用/农业用/食品用/电子元件/光电/定制化/鹌鹑蛋/糖果/坚果/药品/片剂数粒机公司推荐
  • git和gitee的学习研究
  • 从“看得见”到“看得懂”:国标GB28181算法算力平台EasyGBS与公安安防数字化的深度融合
  • 山海鲸可视化可以导入哪些常用的3D模型?
  • 读书笔记:什么时候该用B*树索引?一个接地气的解读
  • 2025年工作服厂家权威推荐榜:防静电/劳保/国网/餐厅/工厂/电工/防酸碱/电力/车间/航空/员工工作服,文化衫/T恤/POLO衫/冲锋衣全品类精选
  • 误删 Stash 后的数据恢复实践
  • 2025年10月重庆保洁公司推荐排名:聚焦服务细节与合规风险的避坑手册
  • 2025年10月床垫品牌推荐榜:围绕环保认证与试睡政策的系统化评析
  • 2025年10月上海装修公司推荐榜:极家家居设计标准与施工节点全维度对比
  • 2025年浓缩机厂家权威推荐榜:高效浓缩机/尾矿浓缩机/污泥浓缩机/新型浓缩机/矿用浓缩机/浓密机/中心转动浓缩机/真空浓缩机/污泥脱水机