java - 413 请求实体太大 - 使用 Spring Boot 和 Rest 模板

标签 java angularjs spring amazon-web-services resttemplate

使用 Spring Rest 模板上传一个 100 MB 的文件,使用多部分发布请求。

客户端代码:

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);

但是服务器(部署在 Amazon AWS 上的 Springs Boot 应用程序)返回:

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)

奇怪的是,我可以使用 Angular JS 代码将相同的文件上传到相同的 Spring Boot 应用程序。

尽管在 Angular 代码中我使用:forceChunkSize : true

我可以在 java 中做同样的事情吗?

最佳答案

也许这有帮助:

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

RestTemplate template = new RestTemplate(factory);

When sending large amounts of data via POST or PUT, it is recommended to change this property to false

关于java - 413 请求实体太大 - 使用 Spring Boot 和 Rest 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34762394/

相关文章:

java - Java 对 WPF 的回答是什么?

java - Spring Test DBUnit 和表架构名称

java - Apache Solr 核心架构从 4.x 升级到 5.x(或更高版本)

angularjs - 如何在没有 ng-model 的情况下对 select 使用 ng-change

java - 如何在运行时切换 Spring 配置文件

java - LoadingCache expireAfterWrite 未按预期工作

javascript - 路由 Angular JS 不工作并且不抛出错误

java - 是否可以在TokenEnhancer中获取ClientDetails

spring - 添加@EnableBatchProcessing 会导致 TransactionRequiredException 错误

node.js - 将 Mean.io 用于我的 SPA 应用程序