gpt4 book ai didi

java - 在服务器上创建的 Zip 文件并使用 java 下载该 zip

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:55:47 24 4
gpt4 key购买 nike

我从 mkyong 获得了以下代码,用于在本地压缩文件。但是,我的要求是在服务器上压缩文件并需要下载它。谁能帮忙。

写入 zipFiles 的代码:

public void zipFiles(File contentFile, File navFile)
{
byte[] buffer = new byte[1024];

try{
// i dont have idea on what to give here in fileoutputstream
FileOutputStream fos = new FileOutputStream("C:\\MyFile.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
ZipEntry ze= new ZipEntry(contentFile.toString());
zos.putNextEntry(ze);
FileInputStream in = new FileInputStream(contentFile.toString());

int len;
while ((len = in.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}

in.close();
zos.closeEntry();

//remember close it
zos.close();

System.out.println("Done");

}catch(IOException ex){
ex.printStackTrace();
}
}

我可以在这里的 fileoutputstream 中提供什么? contentfile 和 navigationfile 是我从代码创建的文件。

最佳答案

如果您的服务器是一个 servlet 容器,只需编写一个 HttpServlet 来压缩和提供文件。

您可以将 servlet 响应的输出流传递给 ZipOutputStream 的构造函数,zip 文件将作为 servlet 响应发送:

ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());

不要忘记在压缩之前设置响应 mime 类型,例如:

response.setContentType("application/zip");

全图:

public class DownloadServlet extends HttpServlet {

@Override
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
response.setContentType("application/zip");
response.setHeader("Content-Disposition", "attachment; filename=data.zip");

// You might also wanna disable caching the response
// here by setting other headers...

try ( ZipOutputStream zos = new ZipOutputStream(response.getOutputStream()) ) {
// Add zip entries you want to include in the zip file
}
}
}

关于java - 在服务器上创建的 Zip 文件并使用 java 下载该 zip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23645746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com