我有一个由一台服务器上的 RestController 提供的大文件下载,我需要通过另一台服务器上的 RestController 进行流式传输。当直接调用终端服务器时,结果流很好。但是,当使用 RestTemplate 调用此服务器然后将响应写入 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 设置为不缓冲,并且通过检查所使用的请求类型 (SimpleStreamingClientHttpRequest) 来验证这是否有效。数据全部恢复正确,它只是一次全部写入流,而不是当它进来时