将文件作为响应返回的正确方法是什么?

时间:2012-06-28 00:13:27

标签: java jax-rs apache-wink

基本上我需要提供接收String参数的REST服务,使用该参数从另一个系统获取文件,然后将获取的文件作为响应返回。

效果应与用户点击pdf或任何其他二进制文件链接时相同,浏览器会提示他保存/下载该文件。

有几点:

  • 是否可以流式传输文件(在我从源系统接收时发送字节)。换句话说,如何处理非常大的文件?
  • 也与流媒体有关,当使用常规的HttpServletResponse时,我是否必须等到大文件被完全读取到return response.build()

如何使用Apache Wink进行此操作?

PS对不起,对于Wink大师来说这可能是微不足道的,但我只是开始围绕developer guide

1 个答案:

答案 0 :(得分:3)

您只需从方法中返回java.io.File即可。如果您愿意,可以使用Response包装它。 Wink将处理流媒体。当您致电response.build()时,流式传输不会启动,而是在您的方法完成时启动。

如果您想要正确的下载对话框,则应返回正确的Content-Disposition标题。见How to set response header in JAX-RS so that user sees download popup for Excel?