如何使用RestTemplate上传超大文件呢?
下文笔者讲述RestTemplate上传大文件的方法分享,如下所示:
今天使用RestTemplate上传大文件时,出现以下错误
java.lang.OutOfMemoryError: Java heap space
出现此异常的原因:
post大文件时,先缓冲请求正文内容,此时就会导致内存溢出
那么如何解决这个问题呢?
我们只需 requestFactory.setBufferRequestBody(false);
即可解决此类异常
例:
---设置restTemplate
@Bean
public RestTemplate restTemplate() {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setBufferRequestBody(false);
RestTemplate rest = new RestTemplate(requestFactory);
return rest;
}
---restTemplate使用
FileSystemResource resource = new FileSystemResource(new File(path));
HttpEntity<FileSystemResource> httpEntity = new HttpEntity<>(resource,headers);
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setBufferRequestBody(false);
RestTemplate rest = new RestTemplate(requestFactory);
rest.put(upload_url, httpEntity);
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


