我正在使用Java Jersey来实现REST服务。 我的服务应该提供的一件事是文件下载选项。 这些文件非常大,并且是根据db。
中的数据构建的目前,我从数据库中获取所有数据并将其保存到文件中 并返回
Response.ok().entity(new FileInputStream(file)).build();
有没有办法在不完全从db下载数据的情况下开始提供文件,但是数据来自db会将其附加到输出流吗?
答案 0 :(得分:8)
答案 1 :(得分:7)
怎么样
File fileToSend = getFile();
return Response.ok(fileToSend, "application/zip").build();
可以将媒体类型设置为与正在发送的文件匹配。
这看起来非常简单,但更重要的是,阅读此内容的java专家是否会看到解决方案的性能问题?
答案 2 :(得分:0)
答案 3 :(得分:0)
取决于底层数据库连接/驱动程序的类型,如果您有权访问JDBC层(例如使用Hibernate),则应该可以使用JDBC Streaming API流式传输数据,然后从ResultSet中获取Streams并传递它们进入泽西岛的Response Builder。 我自己没有这样做..
点击此处: