当前位置: 首页 > 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.jsqmd.com/news/15401/

相关文章:

  • neural network中的tensor是什么?
  • 2025年工厂维保,工厂机电维修,工厂应急维修,工厂运维服务厂家推荐排行榜,专业高效与全方位保障之选!
  • 2025年工厂维保,工厂机电维修,工厂应急维修,工厂运维服务厂家推荐排行榜,专业高效与全方位保障之选!
  • 2025/10/17
  • 2025年视频拍摄服务权威推荐榜:创意剪辑与高清画质完美结合,打造视觉盛宴!
  • pytorch p66实训二
  • 有没有人坐11.1号晚上9点的火车返回衡水,大家要一起走么
  • 2025年10月权威更新:门头/仿木纹板/拉网/铝复合板/锥芯板/太空舱/铝蜂窝板/铝单板厂家排行榜前十强推荐与选购指南四川汇才以实力登顶
  • 2025年网络推广服务商权威推荐榜单,SEO优化,SEM营销,社交媒体推广,内容营销公司推荐
  • 日志分析-Tomcat日志分析
  • Cursor国内用户无法使用模型(Model not avilable)解决方案
  • 2025年手持式光谱仪厂家权威推荐榜单:精准检测与便携操作的行业首选!
  • CF1325F Ehabs Last Theorem 题解
  • 2025年解冻设备厂家权威推荐榜单:高效节能与智能控制的行业首选!
  • Notepad++中替换时保留分组字符
  • 2025年10月休闲食品品牌权威评测与推荐:用数据说话的全景选购指南
  • 2025年10月PE管厂家推荐榜:茗杰建华领衔的对比评测与选购指南
  • 2025年棋牌室加盟权威推荐榜单:精选品牌,专业服务与市场口碑深度解析!
  • 2025年混合机厂家推荐排行榜,槽型/卧式槽型/双螺旋锥形/螺杆锥形/高速/立式高速/方锥/方锥型/螺带/卧式螺带/V型/双锥/一维/一维运动/二维/二维运动/三维运动/三维混合机公司推荐
  • OpenCSG 派拉软件:打造企业级AI平台,安全高效加速AI应用落地
  • PhotoShop网页版为人像换背景,一键完成抠图换景
  • 2025年机电安装厂家权威推荐榜单:覆盖管道/电气/生物医药工厂/暖通空调/空压系统/纯水系统/厂房通风/车间配电/机械设备安装,专业服务之选!
  • 2025年网络推广/网络营销/网络营销推广服务商权威推荐榜单,专业策略与高效转化口碑之选!
  • 03-转义字符
  • Avaloni11开发笔记
  • 2025年轻钢龙骨厂家/铝方通厂家/铝单板厂家/石膏板厂家推荐排行榜,建筑装饰材料优质选择!
  • 题解:P12550 [UOI 2025] Reversal ABC
  • 2025年生物医疗冷链运输厂家推荐排行榜,覆盖药品、临床样本、CAR-T、蛋白、诊断试剂、医药、血液、细胞、芯片运输,冷藏车、冷藏箱、保温箱、干冰、液氮温控及国际进出口运输
  • 编译安装gdb 编译安装gdb
  • 2025年10月商标注册公司推荐榜:五强对比与中立评测助您高效决策