在服务器(硬盘)上未创建ZIP文件的情况下,如何让客户端下载包含自定义选定文件的ZIP文件?

时间:2018-07-17 13:39:29

标签: java spring spring-boot

我有一个要求,我将允许用户选择文件列表(使用复选框),并让他通过压缩文件来下载他选择下载的所有文件,并向他显示下载提示。

我可以通过在服务器硬盘上创建zip文件并利用此文件并让用户下载文件来做到这一点,一切正常。但是我不想在硬盘上创建一个zip文件,而是想即时创建它,并让用户下载该zip文件,在任何时候,我的\approx文件都应该没有服务器。

2 个答案:

答案 0 :(得分:1)

在硬盘上创建文件或通过spring-mvc-endpoint返回文件没有区别。只要确保将ZipOutputStream重定向到response.getOutputStream()

例如:

response.setHeader("Content-disposition","attachment; filename=myfile.zip");         
ZipOutputStream stream = new ZipOutputStream(response.getOutputStream());
ZipEntry zipEntry = new ZipEntry(myFile);
zipStream.putNextEntry(zipEntry);
//write your file-content to zipstream e.g. like this
zipStream.write(Files.readAllBytes(Paths.get("myfile")));

答案 1 :(得分:-1)

使用fileinputstream读取所有文件,转换为字节数组,然后在响应标头中将响应类型设置为“ content-type:application / zip”