失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 打包文件zip压缩包返回

打包文件zip压缩包返回

时间:2018-12-10 21:59:08

相关推荐

打包文件zip压缩包返回

目标:

生成多个csv文件,并打包返回给前端

生成csv文件打包zip 返回文件流

开干:

1 引入pom

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.4</version></dependency>

2 获取数据,然后生成csv文件

控制器如下:

@PostMapping("/export")@ApiOperation("导出")public void export(@RequestBody GraphData graphData, HttpServletResponse response, @PathVariable String space) throws UnsupportedEncodingException {vertexService.export(graphData,response,space);}

主要是通过 response 返回文件流;

通过数据写入到csv中

String fileName = "关系-" + key;String pathname = path + "/" + fileName + ".csv";//生成的文件位置 和 文件名称CsvWriter csvWriter = CsvUtil.getWriter(new File(pathname), CharsetUtil.CHARSET_UTF_8);//设置编码格式for (List<String> row : value) {//数据集合,写入每行数据csvWriter.write(Convert.toStrArray(row));}csvWriter.flush();csvWriter.close();// 一个文件已经完成,多个文件 循环此代码 多个文件都放在同一个文件夹下

3 通过生成的文件生成压缩包zip

String demoName = "导出数据.zip";// 压缩包zipString zipPath = path + demoName;//包含zip文件的名称 生成的zip路径 不应该是打包路径的子路径ZipUtil.zip(path, zipPath, CharsetUtil.CHARSET_UTF_8, false);// path 要压缩的路径FileUtil.del(path);// 删除csv源文件 可以不删除//返回压缩包try {BufferedInputStream bis;OutputStream out = response.getOutputStream();response.setContentType("text/html; charset=UTF-8");//设置编码格式response.setContentType("application/octet-stream");// 设置contentyperesponse.setHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(space + "_" + randomNumbers + demoName, CharsetUtil.UTF_8))));// 设置返回文件名称bis = new BufferedInputStream(new FileInputStream(zipPath));//定义byte,长度就是要转成zip文件的byte长度,避免浪费资源byte[] buffer = new byte[bis.available()];bis.read(buffer);out.flush();out.write(buffer);} catch (IOException e) {e.printStackTrace();}

最终效果如下

如果觉得《打包文件zip压缩包返回》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。