java - java Play! 返回结果后如何执行代码框架?

标签 java streaming playframework-2.2 resource-cleanup

我正在使用 Play! Framework 2.2.1,我想流式传输一个在旅途中创建的文件。文件完全流式传输后,我想清理它,但我没有任何上下文可以这样做。

这种操作有注解或者回调吗?

最佳答案

您可以将文件内容复制到 FileInputStream,删除文件然后返回流,无论如何,您需要根据原始文件设置一些 header ,即如果您生成 ZIP,它可能是(伪代码!):

public static Result file() {

    File tmpFile = new File("/path/to/your/generated.zip");

    FileInputStream fin = null;
    try {
        fin = new FileInputStream(tmpFile);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    response().setHeader("Content-disposition", "attachment;filename=" + tmpFile.getName());
    response().setHeader(CONTENT_TYPE, "application/zip");
    response().setHeader(CONTENT_LENGTH, tmpFile.length() + "");

    tmpFile.delete();

    return ok(fin);
}

其他选项是将临时文件写入专用文件夹并使用通用 ok(file); 返回它们,因此您无需关心 header 的创建,无论如何您需要编写调度程序任务将每 x 分钟删除超过 n 分钟/小时的文件。

关于java - java Play! 返回结果后如何执行代码框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24372279/

相关文章:

java - 在 Java Controller (PlayFramework) 中执行 Scala Action

java - OpenSAML 的意义何在?还有其他选择吗?

Java面试题: finalize() method

java - 如何在 Java Swing 中创建简单的表格?

testing - 如何对视频流服务器进行压力测试?

javascript - 在 cordova 移动应用程序上流式传输 Soundcloud

android - 是否所有版本的 Android 都支持 MediaPlayer 流?

java - 检查不同对象的空值

java - 在 Java Play Framework 2.2.x 中启用 CORS

java - PlayFramework Java 项目编译失败 - "scala.reflect.internal.MissingRequirementError: object scala.runtime in compiler mirror not found"