Java生成Json文件添加到ZIP压缩并导出
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压缩并导出相关推荐
- 使用java生成json文件
需求:使用java代码生成一个json格式的文件,自定义相关内容 实现: 代码如下: package com.zt.posts.common.util; import lombok.extern.sl ...
- java生成Json文件
目录 使用工具 使用说明 Website.java JsonFormatTool.java CreateFileUtil.java Main.java pom.xml 效果展示 转载: http:// ...
- java 生成pdf文件,添加图片
所需要的包: 1. iText 下载地址: http://nchc.dl.sourceforge.net/sourceforge/itext/itext-2.0.3.jar 2. iTex ...
- 深度学习制作数据集的部分代码实现(解压zip、生成json文件)
1.当数据集是压缩包时,需要解压成图片文件 import zipfile def unzip_data(src_path,target_path):'''解压原始数据集,将src_path路径下的zi ...
- JAVA 实现 json文件的生成与导出
本人对于java的语法不是很熟,算是半路突然入坑这种,之前实现过python生成json文件并导出.json文件: 怎料java的语法有些出入,现整理做个笔记: 推荐个Json格式化工具:json格式 ...
- POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解...
http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...
- java 导出mdb文件_Java中Java生成mdb文件工具类
package com.util; /** * Java生成mdb文件[MS Access文件] * 1. 在ClassPath下存一个空的blank.mdb. (也就是在你的项目中包含一个空白的 ...
- 使用Java生成excel文件:apache-poi
使用办公文档插件: 文件-------HSSFWorkbook 页----------HSSFSheet 行----------HSSFRow 列----------HSSFCell 样式------ ...
- java生成xml并直接写入zip包
java生成xml并直接写入zip包,可同时写入附件,解决汉字乱码 import java.io.BufferedOutputStream; import java.io.DataOutputStre ...
最新文章
- linux删除zlib无法远程,linux zlib默认装在哪里
- 开发日记-20190614 克服过去
- Qt Creator批注设计
- 房贷利率一涨再涨,为什么排队买房的越来越多?
- lambda捕获this_非捕获Lambda的实例
- ssh隧道 mysql,如何通过SSH隧道连接MySQL
- HDU 1827 Summer Holiday 图论scc
- 3.8 Anchor Boxes
- 刘世锦:引入区块链等相关技术建立政府、企业和个人的绿色责任账户
- Parallels Desktop 17 for Mac虚拟机 v17.0.1 (51482)
- 良心安利建筑行业3d打印模型素材网站
- 基于ffmpeg的h264播放器无法播放HI3516开发板保存的h264码流的问题
- 24小时改变你的人生 (1至12小时)很好的书,推荐大家有时间在网上看看。
- 开发过程中沟通的重要性
- 常见的预设分栏包括_Word技巧 || 美观实用的文档分栏,问题解决方案都在这里了!...
- 自然语言处理nltk分词断句(2)
- 计算机用户名怎么改好听,电脑版优酷怎么改昵称
- 我们是如何连上WiFi的?
- 项目管理应树立“三种理念”(转)
- 征服面试算法-2:算法应该怎么刷
热门文章
- 文献管理神器:Endnote
- 关于一起linux secure安全日志写入异常分析处理
- LTRIM函数和RTRIM函数
- (02)Cartographer源码无死角解析-(05) 程序运行常见错误与解决→模拟错误
- [Andriod] fastboot 和 recovery 模式的区别
- 666-集群聊天服务器项目总结
- 查看GPU支持的CUDA版本
- python脚本传递参数
- ssm基于javaweb的医疗健康知识管理系统设计与实现毕业设计源码131903
- sonnoc索诺克投影仪无法输出画面,提示“输入信号超出输出范围 调整为1920X1080@60Hz“