2012-12-06 61 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

相關問題