编程语言
首页 > 编程语言> > java – 通过RestTemplate下载流文件

java – 通过RestTemplate下载流文件

作者:互联网

我有一个大型文件下载,由一台服务器上的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)验证了这是否有效.
所有数据都是正确的,它只是一次只写入流,而不是它的内容

解决方法:

RestTemplate不是用于流式传输响应主体,如pointed out in this JIRA issue.

标签:java,spring,spring-boot-2,outputstream,spring-cloud-netflix
来源: https://codeday.me/bug/20190711/1430605.html