加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 通过RestTemplate下载流文件

发布时间:2020-12-15 02:15:16 所属栏目:Java 来源:网络整理
导读:我有一个大型文件下载,由一台服务器上的RestController提供,我需要通过另一台服务器上的RestController进行流式传输.直接调用终端服务器时,结果流很好.但是,当使用RestTemplate调用此服务器然后将响应写入OutputStream时,响应将在前端服务器上缓冲,直到整个
我有一个大型文件下载,由一台服务器上的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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读