将大的二进制文件上传到使用Java Spring RestTemplate
问题描述:
我有一个能够接收二进制数据[文件]的servlet。将大的二进制文件上传到使用Java Spring RestTemplate
我想使用Spring的RestTemplate()将大的二进制文件上传到servlet。然而,它不可能将二进制文件全部加载到内存中。
到目前为止,我的尝试导致了OutOfMemory错误,表明这些方法试图将整个文件加载到内存中。
如何将这个二进制数据流到servlet?在Spring或Java中更好。
答
找到了答案:
https://jira.springsource.org/browse/SPR-7909
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setBufferRequestBody(false);
RestTemplate rest = new RestTemplate(requestFactory);
这防止加载整个请求到内存中。
注意,这是从Spring 3.1版开始修复的。 因此,如果您使用的是Spring版本> = 3.1,则不会再出现此问题。 否则,上面的代码片段应该可以解决问题。 –
@Doron:我使用Spring 3.2.5,但遇到了同样的问题,我不确定它是否已修复。 – taynguyen