2011-10-18 84 views
2

我想知道这是否可以完成。发送http响应后执行Java

我有一个RESTful服务发送这样

File filer = new File("C:\tempfile.txt"); 

return Response.ok(filer, MediaType.APPLICATION_OCTET_STREAM).header("content-disposition", "attachment; filename=\"" + newName + "\"").build(); 

我想删除文件后,HTTP响应已发送到客户端(使过滤器在服务器上的一个临时文件)一个javax.ws.rs.core.Response响应。

我很感谢您的帮助。

回答

0

您可能不应该使用临时文件开始。如果要发送生成的二进制数据并且不想将其全部保存在内存中,请在调用ok()时将StreamingOutput作为实体传递。

+0

刚出于好奇,是否可以在响应后执行一些doce操作? –

+0

@MHero:我找不到任何请求生命周期钩子,所以看起来你不能仅仅使用标准API。也就是说我不熟悉API,可以在技术堆栈的另一层或者作为特定于供应商的扩展。 – millimoose

0

使它在最后的块 尝试文件filer =新文件(“C:\ tempfile.txt”);

return Response.ok(filer,MediaType.APPLICATION_OCTET_STREAM).header(“content-disposition”,“attachment; filename = \”“+ newName +”\“”)。build(); }最后{ //删除文件 }

+1

'finally'块将在函数返回之前执行(或抛出一个异常)。 – millimoose