1

我写了一个控制器如下:

@PostMapping(value="/upload", produces = "application/json")
@ApiOperation("Upload")
@ApiIgnore
public ResponseEntity<ResponseObject> fileUpload(
        @RequestParam(value="file") MultipartFile file,
        @RequestParam (value="code",required=false, defaultValue="0")String code,
        @RequestParam (value="approvaldetails",required=false, defaultValue="0") String approvalDeatils) throws Exception{
    return uploadService.uploader(file,code,approvalDeatils);
}

我在 application.porterties 进行了以下配置:

spring.servlet.multipart.max-file-size=30MB
spring.servlet.multipart.max-request-size=30MB

但我可以上传高达 ~15MB 的文件 已编辑:Spring Boot 版本:2.0.1

4

2 回答 2

1

1. 第一个潜在原因:

也许它与您使用的spring-boot版本有关。

MULTIPART 属性已根据版本进行更改。

Spring Boot 1.3.x 及更早版本

multipart.max-file-size
multipart.max-request-size

在 Spring Boot 1.3.x 之后:

spring.http.multipart.max-file-size=-1
spring.http.multipart.max-request-size=-1

在 Spring Boot 2.0 之后:

spring.servlet.multipart.max-file-size=-1
spring.servlet.multipart.max-request-size=-1 

2. 第二个潜在原因:

您的应用没有足够的内存来接收文件

3. 第三个潜在原因:

如果您将打包为 war 并部署在 tomcat 上,请确保 tomcat 允许maxPostSize适合您的用例。

在 conf\server.xml 中:

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
                maxPostSize="67589953" />
于 2020-10-03T11:21:29.943 回答
0

@M.马斯。1.我使用的是spring boot 2.0.1。2.即使我减少到 8MB 也不取决于内存,再次 ~4MB 将是可以接受的。3. 没有部署在WAR文件上,我在调试。我上传了一个 16.8MB 的文件,它引发了以下异常:

org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException:请求被拒绝,因为它的大小 ( 33542171 ) 超过了配置的最大值 (31457280)

于 2020-10-03T12:27:14.327 回答