2016-01-13 127 views
1

使用Spring Rest模板使用多部分發布請求上傳100 MB文件。413請求實體太大 - 使用Spring Boot和Rest模板

客戶端代碼:

HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.MULTIPART_FORM_DATA); 
    MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>(); 

    map.add("name", chunk.getFilename()); 
    map.add("filename", chunk.getFilename()); 
    map.add("flowChunkNumber", chunk.getNumber()); 
    map.add("flowChunkSize", chunkSize); 
    map.add("flowIdentifier", chunk.getIdentifier()); 
    map.add("flowTotalSize", chunk.getTotalSize()); 
    map.add("flowCurrentChunkSize", chunk.getSize()); 
    map.add("file", chunk.getResource()); 

    HttpEntity<MultiValueMap<String, Object>> entity = new HttpEntity<MultiValueMap<String, Object>>(map, headers); 


    ResponseEntity<String> response = executeForResponse(
      baseUri().path("/api/v1/uploads/chunks") 
             .build().toUri(), HttpMethod.POST, entity, String.class); 

然而服務器(部署在亞馬遜AWS泉啓動應用程序)返回:

org.springframework.web.client.HttpClientErrorException: 413 Request Entity Too Large 
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91) 
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:614) 
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:570) 
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:545) 
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:466) 

奇怪的是,我可以使用角JS代碼上傳同一文件的同樣的Spring Boot應用程序。

雖然在角碼我用:forceChunkSize:真

我可以做同樣的java嗎?

回答

2

也許這會有所幫助:

SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); 
factory.setBufferRequestBody(false); 

RestTemplate template = new RestTemplate(factory); 

當通過POST發送大量數據或PUT,建議將此屬性更改爲false

+0

NO,這並沒有幫助。 – aknon

+1

謝謝爲我工作。 – stsatlantis