使用Java Jersey返回一个文件

dig*_*igy 21 java jersey

我正在使用Java Jersey来实现REST服务.我的服务应该提供的一件事是文件下载选项.这些文件非常大,并且是根据db的数据构建的.

目前我从数据库中获取所有数据并将其保存到文件并返回

Response.ok().entity(new FileInputStream(file)).build();
Run Code Online (Sandbox Code Playgroud)

有没有办法如何在没有从db完全下载数据的情况下开始提供文件,但是数据来自db会将其附加到输出流?

nis*_*yal 8

怎么样

File fileToSend = getFile();
return Response.ok(fileToSend, "application/zip").build();
Run Code Online (Sandbox Code Playgroud)

可以将媒体类型设置为与正在发送的文件匹配.

这看起来非常简单,但更重要的是,阅读此内容的java专家是否会看到解决方案的性能问题?


Col*_*ert 0

那么您想从数据库中获取流吗?

我不确定这是否可能。

但您不必编写临时文件来发送数据。您可以使用ByteArrayInputStream并将数据与字节数组一起放入其中,而不是写入文件。