gpt4 book ai didi

java - JaxRS 从服务器创建并返回 zip 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:18 26 4
gpt4 key购买 nike

我想使用 JaxRS 从我的服务器创建并返回一个 zip 文件。我不认为我想在服务器上创建一个实际的文件,如果可能的话我想即时创建 zip 并将其传回给客户端。如果我即时创建一个巨大的 zip 文件,如果 zip 文件中的文件太多,我是否会耗尽内存?

我也不确定最有效的方法。这是我的想法,但在 Java 中输入/输出时我很生疏。

public Response getFiles() {

// These are the files to include in the ZIP file
String[] filenames = // ... bunch of filenames

byte[] buf = new byte[1024];

try {
// Create the ZIP file
ByteArrayOutputStream baos= new ByteArrayOutputStream();
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(baos));

// Compress the files
for (String filename : filenames) {
FileInputStream in = new FileInputStream(filename);

// Add ZIP entry to output stream.
out.putNextEntry(new ZipEntry(filename));

// Transfer bytes from the file to the ZIP file
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
// Complete the entry
out.closeEntry();
in.close();
}

// Complete the ZIP file
out.close();

ResponseBuilder response = Response.ok(out); // Not a 100% sure this will work
response.type(MediaType.APPLICATION_OCTET_STREAM);
response.header("Content-Disposition", "attachment; filename=\"files.zip\"");
return response.build();

} catch (IOException e) {
}

}

如有任何帮助,我们将不胜感激。

最佳答案

有两种选择:

1- 在临时目录中创建 ZIP,然后转储到客户端。

2- 在创建它们时,使用响应中的 OutputStream 将 zip 直接发送到客户端。

但永远不要使用内存来创建巨大的 ZIP 文件。

关于java - JaxRS 从服务器创建并返回 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10763244/

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