我们现在要下载一个压缩包文件 并设置密码,密码统一固定
后台部分:

@Value("${drap_platform.export_password}")private String exportPassword;@Overridepublic void createZip(List<TmsTemplate> list,HttpServletResponse response,HttpServletRequest request) throws IOException {// 数据准备JSONObject jsonObject = new JSONObject();String jsonStr = jsonObject.toJSONString(list, SerializerFeature.WriteDateUseDateFormat);logger.debug("createZip json: {}" , jsonStr);String currTime =DateUtils.dateTimeNow();String folder = "template_" + currTime;// 将json数组写入 template_export.json//  String dirName = tarPath + "File.separator" + folder + File.separator;String dirName = tarPath + File.separator + folder + File.separator;logger.debug("要操作的文件夹: {}" , dirName);boolean exist = FileUtil.exist(dirName);if (exist) {FileUtil.del(dirName);}File jsonFile = FileUtil.file(dirName + "template_export.json");FileUtil.writeBytes(jsonStr.getBytes(),jsonFile);// 创建etl文件夹FileUtil.mkdir(dirName+"etl");// 遍历所有的for (TmsTemplate tmsTemplate : list) {if ("1".equals(tmsTemplate.getTemplateKind().toUpperCase(Locale.ROOT))) {// 创建ETL 文件夹存放的目录FileUtil.mkdir(dirName+"etl"+  File.separator + tmsTemplate.getTemplateId());// 根据ID 获取 文件存放地址 , 将文件copy 到 当前文件夹TmsTemplateFile tmsTemplateFile = new TmsTemplateFile();tmsTemplateFile.setTemplateId(tmsTemplate.getTemplateId());List<TmsTemplateFile> tmsTemplateFiles = tmsTemplateFileMapper.selectTmsTemplateFileList(tmsTemplateFile);for (TmsTemplateFile templateFile : tmsTemplateFiles) {// 复制 文件 /profile/upload/2022/08/10/c34363f17b6fa728ad720f30a59fdfa7.docx --> /upload/2022/08/10/c34363f17b6fa728ad720f30a59fdfa7.docxString fileName = templateFile.getFileUrl().substring(8);logger.debug("source file {}" , fileName);//String src = tarPath  +fileName;String dest =  dirName+"etl"+ File.separator + tmsTemplate.getTemplateId() + File.separator  +templateFile.getFileName();logger.debug("开始复制文件 从: {} 到 {}" , src, dest);FileUtil.copy(src,  dest, true);}}}// 对整个文件夹 进行压缩, 并且加密 dirNamelogger.debug("开始对文件夹:{} 进行压缩加密", dirName);String zipFileName = tarPath + File.separator + folder + ".zip";logger.debug("压缩的以后的文件:{}", zipFileName);ZipUtil.zipEncrypt(dirName,zipFileName,exportPassword);// 修改后缀名String newFileName = tarPath + File.separator + folder + ".tms";File newFile = new File(zipFileName);FileUtil.rename(newFile,newFileName,true);// 删除文件夹FileUtil.del(new File(dirName));// 将tms 下载到浏览器response.setCharacterEncoding("utf-8");response.setContentType("multipart/form-data");response.setHeader("Content-Disposition", "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, newFileName));FileUtils.writeBytes(newFileName, response.getOutputStream());// 删除文件 删除zipFileUtil.del(new File(newFileName));}

前端vue部分:

生成一个tmsdownload.js 去调用里面的下载 download 方法

import { downLoad } from '@/utils/tmsdownload'/** 下载模板操作 */importTemplate() {importTemplate().then(response => {this.download(response.msg)})},

tmsdownload.js :

import axios from 'axios'
import { getToken } from '@/utils/auth'const mimeMap = {xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',zip: 'application/zip'
}const baseUrl = window._CONFIG['BASE_URL']
export function downLoad(str, filename) {var url = baseUrl + straxios({method: 'get',url: url,responseType: 'blob',headers: { 'Authorization': 'Bearer ' + getToken() }}).then(res => {resolveBlob(res, mimeMap.zip)})
}
/*** 解析blob响应内容并下载* @param {*} res blob响应内容* @param {String} mimeType MIME类型*/
export function resolveBlob(res, mimeType) {const aLink = document.createElement('a')var blob = new Blob([res.data], { type: mimeType })var fileName = 'template_' + Date.now() + '.tms'fileName = fileName.replace(/\"/g, '')aLink.href = URL.createObjectURL(blob)aLink.setAttribute('download', fileName) // 设置下载文件名称document.body.appendChild(aLink)aLink.click()document.body.appendChild(aLink)
}

java 导出加密压缩包 设置 压缩包加密密码 并下载 (springboot+文件工具类)相关推荐

  1. java百度上传控件_百度Bos上传文件工具类-BosUtils(java)

    功能要求 java项目中所有的图片均使用对象存储BOS 准备材料 首先你要又百度bos的账号,找到自己的ak.sk.endpoint.bucketname(这些东西不懂得可以去看bos的文档) 功能代 ...

  2. zip4j对处理压缩包及压缩包加密处理

    zip4j对处理压缩包及压缩包加密处理,代码如下: package com.zip4j;import java.io.File; import java.util.ArrayList; import ...

  3. Java导出多个excel压缩成zip下载

    Java导出多个excel压缩成zip下载 maven <!--hutoos工具类根据需要可以导入不同的模块,我这里是导入全部的模块--><dependency><gro ...

  4. 「Java工具类」pdf导出工具类java导出pdf文件工具类

    介绍语 本号主要是Java常用关键技术点,通用工具类的分享:以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+d ...

  5. java.util.zip 用法,Java压缩文件工具类ZipUtil使用方法代码示例

    本文实例通过Java的Zip输入输出流实现压缩和解压文件,前一部分代码实现获取文件路径,压缩文件名的更改等,具体如下: package com.utility.zip; import java.io. ...

  6. ApachePOI导出exce,设置单元格风格的属性和设置字体风格的属性的两个工具类,POI宽度和excel 像素转换

    设置单元格风格的属性和设置字体风格的属性的两个工具类,POI宽度和excel 像素转换 /*** 功能:设置单元格风格的属性* */public static HSSFCellStyle SetCel ...

  7. java使用jxl生成excel表格,jsp使用js下载excel文件xls

    java使用jxl生成excel表格,jsp使用js下载excel文件 后端代码 maven jar包 主体代码逻辑 引入的jar包 具体代码段 重点详解 表头和表格内容两种格式 直接将 HttpSe ...

  8. 【Java工具类】(22)—服务器传文件工具类SCp和Sftp

    Java工具类(22)-服务器传文件工具类SCp和Sftp 1.Scp package com.awifi.capacity.docker.manager.utils;import ch.ethz.s ...

  9. java io文件流序列化_Java——Properties集合,Object序列化流与反序列化流,打印流,commons-IO文件工具类...

    一.properties集合 集合对象Properties类,继承Hashtable,实现Map接口,可以和IO对象结合使用,实现数据的持久存储. 特点: Hashtable的子类,map集合中的方法 ...

最新文章

  1. 理解 Delphi 的类(十一) - 深入类中的方法[3] - 方法在实现时的参数省略
  2. 作业二/Git的安装以及使用
  3. Spring相关API-getBean()方法的使用
  4. ajax中加上AntiForgeryToken防止CSRF攻击
  5. IntelliJ IDEA 编辑器配置vue高亮显示
  6. UOJ#386. 【UNR #3】鸽子固定器(链表)
  7. MAVEN利用Profile构建不同环境的部署包
  8. Study From DevOps 学习交流会议
  9. java 不安全操作_Java新手求助:怎么会出现使用了未经检查或不安全的操作。
  10. 软考(软件设计师)考点总结 -- 计算机组成与体系结构
  11. Altium designer—STM32F103ZET6最小系统原理图
  12. 【模拟】桐桐的新闻系统
  13. 基于Python实现自然间断点批量处理
  14. html小总结:表格立体效果的实现.
  15. 为什么 128 KB 的魂斗罗可以塞下这么长的剧情?
  16. 计算机组装评分标准,计算机组装与配置技能竞赛评分标准表.doc
  17. 计算机视觉牛人、网站、资源
  18. TIVA 123GXL的边沿计数模式测量低频PWM
  19. 如何删除PPT密码?附详细方法
  20. 何为数据库连接池?其工作原理是什么?

热门文章

  1. 电话聊天狂人(java)
  2. 小云路由器mysql地址_小云OS3.0,极简操作,让小白玩转离线下载和NAS(转发)
  3. 提示Microsoft office word 遇到问题需要关闭。还问是否发送错误报告。
  4. 1028: I love 闰年! Java
  5. Javascript实现表单检验(如注册界面)
  6. 开源大数据技术社区召集令
  7. 计算机桌面怎么全屏显示,电脑显示器如何设置全屏 把电脑屏幕调成满屏的方法有哪些...
  8. MySQL insert 插入优化技巧,MySQL 优化学习第8天
  9. 乱砍设计模式之三 -- DECORATOR模式
  10. 队列实现杨辉三角(附详细图解)