Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Playframework 2.5.0:无法为服务器端生成的zip文件提供服务_Java_Playframework_Playframework 2.5 - Fatal编程技术网

Java Playframework 2.5.0:无法为服务器端生成的zip文件提供服务

Java Playframework 2.5.0:无法为服务器端生成的zip文件提供服务,java,playframework,playframework-2.5,Java,Playframework,Playframework 2.5,我的Playframework 2.5.0应用程序必须提供临时创建的zip文件。 我在/tmp目录中创建并实现了zip文件,没有任何问题(我可以在这里打开它并提取包含的文件) 但发送到客户端的文件似乎被截断,无法打开 String tempPath = "/tmp/" + label + ".zip"; File zipFile = new File(tempPath); zipFile.deleteOnExit(); ZipOutputStream zos = null; try {

我的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();
    }
}

我返回一个经典的结果对象。。。问题是什么?

您必须先使用
zos.close()
关闭zip文件,然后才能
返回ok(zipFile)
您必须先使用
zos.close()
关闭zip文件,然后才能
返回ok(zipFile)
如果您不更改zip文件,为什么不直接使用
返回ok(new java.io.file)呢(“/path/to/7file.zip”);
?如果不更改zip文件,为什么不
返回ok(新的java.io.file(“/path/to/7file.zip”);