java – 通过RestTemplate下载流文件

weixin_38069804 2019-09-12 12:53:37
我有一个大型文件下载,由一台服务器上的RestController提供,我需要通过另一台服务器上的RestController进行流式传输.直接调用终端服务器时,结果流很好.但是,当使用RestTemplate调用此服务器然后将响应写入OutputStream时,响应将在前端服务器上缓冲,直到整个文件准备就绪,然后进行流式传输.有没有办法可以将文件写入OutputStream? 目前,我在前端服务器上的代码看起来与此类似 @ResponseBody public void downloadResults(HttpServletRequest request, HttpServletResponse response, @RequestParam("id") String jobId, OutputStream stream) throws IOException { byte[] data = restTemplate.exchange("http://localhost/getFile", HttpMethod.POST, requestEntity, byte[].class, parameters).getBody(); stream.write(data); } 我已将RestTemplate设置为不缓冲,我已通过检查所使用的Request类型(SimpleStreamingClientHttpRequest)验证了这是否有效.所有数据都是正确的,它只是一次只写入流,而不是它的内容
...全文
1108 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38073691 2019-09-12
  • 打赏
  • 举报
回复
RestTemplate不是用于流式传输响应主体,如pointed out in this JIRA issue.

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧