Playframework 2.5.0:无法提供服务器端生成的 zip 文件
Playframework 2.5.0 : Unable to serve server-side generated zip file
我的 Playframework 2.5.0 应用程序必须提供临时创建的 zip 文件。
我在 /tmp 目录中创建并完成了 zip 文件,没有任何问题(我可以在这个地方打开它并提取包含的文件)。
但是发送给客户端的文件好像被截断了,打不开
String tempPath = "/tmp/" + label + ".zip";
File zipFile = new File(tempPath);
zipFile.deleteOnExit();
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile)));
for (/* loops through files to zip */) {
InputStream is = methodToGetTheDocument();
ZipEntry zipEntry = new ZipEntry(document.getLabel());
zos.putNextEntry(zipEntry);
byte[] bytes = new byte[2048];
int count = is.read(bytes);
while (count > -1) {
zos.write(bytes, 0, count);
count = is.read(bytes);
}
is.close();
zos.closeEntry();
}
return ok(zipFile);
} catch (Exception e) {
return badRequest("Bad request");
} finally {
try {
zos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
我return一个经典的Result对象...有什么问题?
您必须先使用 zos.close()
"close" zip 文件 return ok(zipFile)
我的 Playframework 2.5.0 应用程序必须提供临时创建的 zip 文件。 我在 /tmp 目录中创建并完成了 zip 文件,没有任何问题(我可以在这个地方打开它并提取包含的文件)。
但是发送给客户端的文件好像被截断了,打不开
String tempPath = "/tmp/" + label + ".zip";
File zipFile = new File(tempPath);
zipFile.deleteOnExit();
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile)));
for (/* loops through files to zip */) {
InputStream is = methodToGetTheDocument();
ZipEntry zipEntry = new ZipEntry(document.getLabel());
zos.putNextEntry(zipEntry);
byte[] bytes = new byte[2048];
int count = is.read(bytes);
while (count > -1) {
zos.write(bytes, 0, count);
count = is.read(bytes);
}
is.close();
zos.closeEntry();
}
return ok(zipFile);
} catch (Exception e) {
return badRequest("Bad request");
} finally {
try {
zos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
我return一个经典的Result对象...有什么问题?
您必须先使用 zos.close()
"close" zip 文件 return ok(zipFile)