java - spring上传文件大小限制报错

标签 java spring spring-boot tomcat spring-restcontroller

我正在使用 Spring Boot,我可以发送小于 1MB 的图像,但是当我使用大于 1MB 的大图像发出发布请求时,我收到此错误:

Maximum upload size exceeded; nested exception is java.lang.IllegalStateException:org.apache.tomcat.util.
http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.

我一直在四处寻找,试图找到这个错误的答案。我已经查看了所有这些问题并尝试实现他们的建议但无济于事:Spring upload file size limit , I am trying to set maxFileSize but it is not honored , org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException , 和 Max Limit of MultipartFile in spring boot

我正在使用 2.0.3 版的 Spring,这是我的帖子映射:

    @PostMapping("/post")
    public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file) {
      String message = "";
      try {
        storageService.store(file);
        files.add(file.getOriginalFilename());

        message = "You successfully uploaded " + file.getOriginalFilename() + "!";
        return ResponseEntity.status(HttpStatus.OK).body(message);
      } catch (Exception e) {
      message = "FAIL to upload " + file.getOriginalFilename() + "!";
      return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(message);
  }

}

下面是我尝试过的所有 application.properties 配置:

1

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

2

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

3

spring.http.multipart.max-file-size=5MB
spring.http.multipart.max-request-size=5MB

4

multipart.max-file-size=5MB
multipart.max-request-size=5MB

5

server.tomcat.max-file-size=5000000

6

server.tomcat.max-http-post-size=5000000

7

spring.servlet.multipart.maxFileSize=-1
spring.servlet.multipart.maxRequestSize=-1

甚至尝试将其更改为 application.yml:

spring:
  servlet:
    multipart:
      max-file-size: 5MB
      max-request-size: 5MB

我还研究了在 web.xml 文件中更改 Tomcat 允许的请求大小,但我没有 web.xml 文件。我使用的 Tomcat 捆绑在应用程序中。

最佳答案

application.properties 中为 Spring Boot 2.0.0.RELEASE 及更高版本 添加以下行 -

spring.servlet.multipart.max-file-size=128MB
spring.servlet.multipart.max-request-size=128MB
spring.servlet.multipart.enabled=true

请注意对于较低版本,即 1.5.9.RELEASE 及以下,过去的配置如下:

spring.http.multipart.max-file-size = 20MB
spring.http.multipart.max-request-size = 20MB

关于java - spring上传文件大小限制报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51410540/

相关文章:

java - Mock beans 与 Mockito 的 Spring Boot 单元测试

java - 如何使用 Java 和两个嵌套 for 循环计算扑克中的对数

java - 如何通过redis hash中的模糊键查询数据

java - 如何使用Retrofit2在Listview中显示json数据

java - 扩展 Hibernate 的 ResourceBundleMessageInterpolator

java - 当 jwt token 无效时,主体对象为 null

java - Android 应用程序从日期开始?

spring - 为什么我在 Spring MVC 中得到此 URL 的 "400 Bad Request"?

java - Spring security 在并发环境中得到错误的主体

java - 在 Spring Boot 中将 Apache Mahout 与 ElasticSearch 集成