通过文件流转加密压缩文件并下载

前言

    

代码实现

文件流转ZIP压缩文件

     文件流转ZIP压缩文件代码实现

public void downloadTest(ReqDTO dto, HttpServletResponse response) {try {// 配置Minio访问下载文件MinioClient minioClient = new MinioClient("http://www.minio.com/", "user", "pwd123#");boolean bucketExist = minioClient.bucketExists("bucketOne");if (!bucketExist) {log.info("create bucket:{}", "bucketOne");minioClient.makeBucket("bucketOne");}final ObjectStat stat = minioClient.statObject("bucketOne", "userInfo.xlsx");log.info("ObjectStat: {}", stat);response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("test.zip", "UTF-8"));// 获取文件流InputStream inputStream = minioClient.getObject("bucketOne", "userInfo.xlsx");//设置读取数据缓存大小byte[] buffer = new byte[4096];try {OutputStream os = response.getOutputStream();ZipOutputStream zos = new ZipOutputStream(os);ZipEntry entry = new ZipEntry("userInfo.xlsx");zos.putNextEntry(entry);//写入压缩文件int size = 0;//设置读取数据缓存大小while ((size = inputStream.read(buffer)) > 0) {zos.write(buffer, 0, size);}//关闭输入输出流inputStream.close();zos.closeEntry();zos.close();} catch (ZipException e) {log.error("download zipOutputStream error:{}", e.getMessage(), e);e.printStackTrace();}} catch (Exception e) {log.error("download minio error:{}", e.getMessage(), e);throw new BusinessException(ErrorCodeEnum.DOWNLOAD_FAIL);}}

文件流转加密压缩文件

     文件流转加密压缩文件代码实现

import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.io.ZipOutputStream;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;private void zipEncryptionFile(ZipOutputStream zos,String fileMd5) {try {MinioClient minioClient = new MinioClient(endpoint, username, secretKey);boolean bucketExist = minioClient.bucketExists(BUCKET_NAME);if (!bucketExist) {log.info("bucket not exit:{}", BUCKET_NAME);}final ObjectStat stat = minioClient.statObject(BUCKET_NAME, fileMd5);log.info("ObjectStat: {}", stat);// 根据文件MD5获取文件流InputStream inputStream = minioClient.getObject(BUCKET_NAME, fileMd5);// 设置读取数据缓存大小byte[] buffer = new byte[4096];try {ZipParameters para = new ZipParameters();// 压缩方式para.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);para.setFileNameInZip(fileMd5);para.setSourceExternalStream(true);// 压缩级别para.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);para.setEncryptFiles(true);para.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);// 压缩加密para.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);para.setPassword(ZIP_WORD);zos.putNextEntry(new File(FilenameUtils.getName(fileMd5)), para);// 写入压缩文件,设置读取数据缓存大小int size = 0;while ((size = inputStream.read(buffer)) > 0) {zos.write(buffer, 0, size);}//关闭输入输出流zos.closeEntry();inputStream.close();zos.finish();} catch (ZipException e) {log.error("download zipOutputStream error:{}", e.getMessage(), e);}} catch (Exception e) {log.error("download minio error:{}", e.getMessage(), e);throw new BusinessException(ErrorCodeEnum.DOWNLOAD_FAIL);} finally {if (null != zos) {try {zos.close();} catch (IOException e) {log.error(e.getMessage(), e);}}}
}

小结

通过文件流转加密压缩文件并下载相关推荐

  1. Python 创建加密压缩文件

    Python 创建加密压缩文件 1. 配置ZLib http://www.winimage.com/zLibDll/minizip.html 下载之后将 zlibwapi.dll 放在 demo/目录 ...

  2. python 批量加密压缩文件

    python 批量加密压缩文件 0x01 解决的问题 0x02 遇到的问题 0x03 代码 0x01 解决的问题 当有大批的文件,并且存放在不同的文件夹中,需要你进行加密压缩时,可参照此代码: 在代码 ...

  3. SQL定时自动备份,并将备份文件加密压缩并自动下载的实现

    作为程序员或者数据库维护人员,可能大家经常 要做的事情就是备份数据库,并且为了安全起见最好是异地备份,但是如果要经常备份,然后把他们传到本地,是一件非常费时费力的事情,尤其像我这种比较懒的程序员,甚至 ...

  4. Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件、zip压缩文件

    Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件.zip压缩文件 目录 Python将Pandas中Dataframe数据保存为gzip/zip文件:gz ...

  5. Android 加密压缩文件

    一.背景 常我们再开发过程中,无论是Android 客户端程序还是桌面程序,有可能涉及到文件的上传和下载,多文件时通常做zip压缩处理,将多个文件压缩为一个zip包,方便传输,另外,客户端内也可能会涉 ...

  6. 破解zip加密压缩文件

    由于之前把一些过去的学习资料压缩加密了,过了很久之后忘记了当时设置的加密密码,于是在网上查了一些关于破解密码的文章,了解了强大的hashcat以及John the Ripper. Hashcat是一个 ...

  7. 安卓加密软件_软件 | 加密压缩文件暴力快速查看,安卓手机适用

    朋友们常常下载文件后需要解压缩,然而解压缩通常要密码,运气好密码就是压缩文件的名字,或者都能在下载的时候能在下载网址中找到,运气不好,就麻烦了,很想要的资源文件就因为没有密码就那么无法查看了. 当然一 ...

  8. 在OSX中制作加密压缩文件

    1.打开Terminal 2.cd到指定目录 3-1.文件加密 zip -e xxx.zip(压缩后文件名) xxx.xxx(文件名) 3-2.文件夹加密 zip -er xxx.zip(压缩后文件名 ...

  9. java中文件如何加密压缩?

    目录 文件加密压缩 1.单个文件加密压缩 2.多文件加密压缩 @(终于等到你) 文件加密压缩 在现如今已经可以实现大部分功能的互联网需求中,安全成为了需要的非必需品,工作需求中会遇到对导出的 exce ...

  10. java批量文件打包成压缩成zip下载和大量数据导出excel时的处理方法

    对于我们来说,java导出数据成excel或其他数据文件,或者下载资源是开发中的家常便饭, 但是在导出的时候,如果点击一个按钮导出几百万条数据,如果不作处理的话很可能会出现一系列的问题. 这里介绍打包 ...

最新文章

  1. 【自考】信息系统开发与管理(二)——章节详读
  2. OpenCart商品分类教程
  3. 【收藏】k8s使用securityContext和sysctl
  4. bgss::spherical_side_formula用法的测试程序
  5. 更改apk安装包对android系统等级要求
  6. 前端学习(3290):react hook state-hook传入对象+1操作
  7. JSP的三六九四七(三大指令、六大标签、九大内置对象、四大作用域、七个动作指令)
  8. wireshark 十六进制过滤_CTF流量分析之wireshark使用
  9. 嵌入式Linux交叉开发环境建立-NFS【ZT】
  10. 從零開始學 ReactJS:最完整的 React 生態系入門教程
  11. DataSet本地化数据的二表链接操作
  12. Linux 3.2.8 内核启动过程
  13. android apk自动安装包下载,Android 下载Apk并安装
  14. 【产品经理学习笔记】Part 7 收益预估
  15. 最新,EI期刊目录更新,又有1本期刊被剔除
  16. 6-25漏洞利用-irc后门利用
  17. Zynq笔记(一) —PL端(FPGA部分)的设计流程
  18. 关于印发《深圳市工业和信息化局绿色制造试点示范管理暂行办法》的通知
  19. 大数据分析的道与术总结
  20. K7+6678信号处理板 方案 原理图 pcb

热门文章

  1. 中国细胞治疗第二届年会会议议程
  2. python讲师陈越_浙大陈越老师数据结构课件
  3. matlab 非支配排序,NSGA-II快速非支配排序算法理解
  4. WEB通信之 长连接、长轮询(long polling)
  5. 企业口碑营销如何做好,可运用这5T理论
  6. 卸载系统应用动画气泡特效创建守护服务进程管理(ActivtyManager提供批量操作)桌面小控件AppWidget
  7. LoggerFactory is not a Logback LoggerContext but Logback is on the classpath
  8. 一问解决设备管理器里面提示:未知usb设备(设备描述符请求失败) 或者是“Unknown USB Device(Device Descriptor Request Sailed)”错误
  9. 没有计算机年代科学家如何计算,难倒了无数科学家的 三体问题
  10. Yolo系列 | Yolov4v5的模型结构与正负样本匹配