2012-12-06 58 views
5

我有一个能够接收二进制数据[文件]的servlet。将大的二进制文件上传到使用Java Spring RestTemplate

我想使用Spring的RestTemplate()将大的二进制文件上传到servlet。然而,它不可能将二进制文件全部加载到内存中。

到目前为止,我的尝试导致了OutOfMemory错误,表明这些方法试图将整个文件加载到内存中。

如何将这个二进制数据流到servlet?在Spring或Java中更好。

回答

10

找到了答案:

https://jira.springsource.org/browse/SPR-7909



SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); 
requestFactory.setBufferRequestBody(false); 
RestTemplate rest = new RestTemplate(requestFactory); 

这防止加载整个请求到内存中。

+0

注意,这是从Spring 3.1版开始修复的。 因此,如果您使用的是Spring版本> = 3.1,则不会再出现此问题。 否则,上面的代码片段应该可以解决问题。 –

+1

@Doron:我使用Spring 3.2.5,但遇到了同样的问题,我不确定它是否已修复。 – taynguyen

相关问题