我正在使用播放!框架 2.2.1,我想流式传输在旅途中创建的文件。文件完全流式传输后,我想清理它,但我没有任何上下文可以这样做。
这种操作是否有任何注释或回调可用?
我正在使用播放!框架 2.2.1,我想流式传输在旅途中创建的文件。文件完全流式传输后,我想清理它,但我没有任何上下文可以这样做。
这种操作是否有任何注释或回调可用?
您可以将文件内容复制到 FileInputStream,删除文件然后返回流,无论如何,您需要根据原始文件设置一些标题,即如果您生成 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);
}
其他选项是将临时文件写入专用文件夹并将它们与 common 一起返回,ok(file);
因此您无需关心标头的创建,无论如何您需要编写调度程序任务,该任务将每x分钟删除超过n分钟/小时的文件。