Java生成Json文件添加到ZIP压缩并导出

  • 前言
  • 代码说明
  • 小结

前言

需要根据在前端选择的文件列表生产Json文件并导出Zip文件

代码说明

前端部分的方法:

    // 导出选中的文件exportFiles() {this.fileIdList = [];for (let i = 0; i < this.multipleSelection.length; i++) {this.fileIdList.push(this.multipleSelection[i].fileId);}const response = dataExport(this, this.fileIdList);let blob = new Blob([response.data], {type: 'application/zip'});if (window.navigator.msSaveOrOpenBlob) {navigator.msSaveBlob(blob)} else {let link = document.createElement('a');link.href = window.URL.createObjectURL(blob);link.click();window.URL.revokeObjectURL(link.href); //释放内存}},
 export const dataExport = (vueObject, dataIdList) => getDataRaw(vueObject, url);export function getDataRaw(vueObject, url) {return new Promise((resolve) => {const config = {};config['responseType'] = 'blob';Vue.prototype.$http.get(url, config).then(res => {console.log(res);resolve(res)})});}

后端部分代码如下:

    @GetMapping("export/{fileIdList}")@ApiOperation(value = "导出ZIP文件", notes = "参数:fileIdList"public void export(@PathVariable("fileIdList") String fileIdList, HttpServletResponse response) {try {String[] dataIdList = fileIdList.split(",");String baseAddress = System.getProperty("java.io.tmpdir");String folder = IDGenerator.idCreated(6, 0);// 根据Id生成对应Json文件if (dataIdList != null && dataIdList.length > 0) {for (String ids : dataIdList) {int id = Integer.valueOf(ids);FileInfo fileInfo = fileInfoService.getById(id);exportFileVO.setData(fileInfo);String jsonString = JSON.toJSONString(exportFileVO, SerializerFeature.WriteMapNullValue);FileUtils.createFile(baseAddress + folder + "/", fileInfo.getFileName() + ".json", jsonString);}}// 将文件夹压缩为ZIP文件String zipFile = baseAddress + folder + ".zip";FileUtils.compress(baseAddress + folder, zipFile);File file = new File(zipFile);FileInputStream inputStream = new FileInputStream(file);// 导出Zip文件byte[] data = new byte[(int) file.length()];inputStream.read(data);inputStream.close();response.setHeader("content-type", "application/octet-stream;charset=ISO8859-1");response.setContentType("application/octet-stream;charset=ISO8859-1");response.addHeader("Content-Length", "" + file.length());response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(folder + ".zip", "UTF-8"));OutputStream stream = response.getOutputStream();stream.write(data);stream.flush();stream.close();// 删除文件夹及压缩文件FileUtils.deleteDir(baseAddress + folder);FileUtils.deleteDir(zipFile);} catch (Exception e) {e.printStackTrace();}}

小结

很常见的一个功能需求,整理方法做一次总结,荣幸与您分享~

Java生成Json文件添加到ZIP压缩并导出相关推荐

  1. 使用java生成json文件

    需求:使用java代码生成一个json格式的文件,自定义相关内容 实现: 代码如下: package com.zt.posts.common.util; import lombok.extern.sl ...

  2. java生成Json文件

    目录 使用工具 使用说明 Website.java JsonFormatTool.java CreateFileUtil.java Main.java pom.xml 效果展示 转载: http:// ...

  3. java 生成pdf文件,添加图片

    所需要的包: 1.  iText    下载地址:  http://nchc.dl.sourceforge.net/sourceforge/itext/itext-2.0.3.jar 2.  iTex ...

  4. 深度学习制作数据集的部分代码实现(解压zip、生成json文件)

    1.当数据集是压缩包时,需要解压成图片文件 import zipfile def unzip_data(src_path,target_path):'''解压原始数据集,将src_path路径下的zi ...

  5. JAVA 实现 json文件的生成与导出

    本人对于java的语法不是很熟,算是半路突然入坑这种,之前实现过python生成json文件并导出.json文件: 怎料java的语法有些出入,现整理做个笔记: 推荐个Json格式化工具:json格式 ...

  6. POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解...

    http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...

  7. java 导出mdb文件_Java中Java生成mdb文件工具类

    package com.util; /**  * Java生成mdb文件[MS Access文件]  * 1. 在ClassPath下存一个空的blank.mdb. (也就是在你的项目中包含一个空白的 ...

  8. 使用Java生成excel文件:apache-poi

    使用办公文档插件: 文件-------HSSFWorkbook 页----------HSSFSheet 行----------HSSFRow 列----------HSSFCell 样式------ ...

  9. java生成xml并直接写入zip包

    java生成xml并直接写入zip包,可同时写入附件,解决汉字乱码 import java.io.BufferedOutputStream; import java.io.DataOutputStre ...

最新文章

  1. linux删除zlib无法远程,linux zlib默认装在哪里
  2. 开发日记-20190614 克服过去
  3. Qt Creator批注设计
  4. 房贷利率一涨再涨,为什么排队买房的越来越多?
  5. lambda捕获this_非捕获Lambda的实例
  6. ssh隧道 mysql,如何通过SSH隧道连接MySQL
  7. HDU 1827 Summer Holiday 图论scc
  8. 3.8 Anchor Boxes
  9. 刘世锦:引入区块链等相关技术建立政府、企业和个人的绿色责任账户
  10. Parallels Desktop 17 for Mac虚拟机 v17.0.1 (51482)
  11. 良心安利建筑行业3d打印模型素材网站
  12. 基于ffmpeg的h264播放器无法播放HI3516开发板保存的h264码流的问题
  13. 24小时改变你的人生 (1至12小时)很好的书,推荐大家有时间在网上看看。
  14. 开发过程中沟通的重要性
  15. 常见的预设分栏包括_Word技巧 || 美观实用的文档分栏,问题解决方案都在这里了!...
  16. 自然语言处理nltk分词断句(2)
  17. 计算机用户名怎么改好听,电脑版优酷怎么改昵称
  18. 我们是如何连上WiFi的?
  19. 项目管理应树立“三种理念”(转)
  20. 征服面试算法-2:算法应该怎么刷

热门文章

  1. 文献管理神器:Endnote
  2. 关于一起linux secure安全日志写入异常分析处理
  3. LTRIM函数和RTRIM函数
  4. (02)Cartographer源码无死角解析-(05) 程序运行常见错误与解决→模拟错误
  5. [Andriod] fastboot 和 recovery 模式的区别
  6. 666-集群聊天服务器项目总结
  7. 查看GPU支持的CUDA版本
  8. python脚本传递参数
  9. ssm基于javaweb的医疗健康知识管理系统设计与实现毕业设计源码131903
  10. sonnoc索诺克投影仪无法输出画面,提示“输入信号超出输出范围 调整为1920X1080@60Hz“