SpringBoot项目启动报错Failed to bind properties under ‘spring.servlet.multipart.max-request-size‘ to org

前些天在开发SpringBoot项目的过程中,遇到了一个启动报错:

Failed to bind properties under 'spring.servlet.multipart.max-request-size' to org

经过查找资料和排查,终于解决了这个问题,现在和大家分享一下。

1.问题症状描述

在启动SpringBoot项目时,控制台输出如下错误信息:

Failed to bind properties under 'spring.servlet.multipart.max-request-size' to org.springframework.boot.autoconfigure.web.servlet.MultipartProperties$FileSize:
    Property: spring.servlet.multipart.max-request-size
    Value: 10240KB
    Reason: The size 10240KB is not in the set of values []

2.问题原因

出现该问题的原因是在application.properties文件中设置了spring.servlet.multipart.max-request-size参数,但是设置的值不在预设的范围内。

spring.servlet.multipart.max-request-size是SpringBoot提供的文件上传限制参数,用于限制上传文件的大小。它有一个默认值为1MB,可以在application.properties中进行修改。一般我们会将其设置为一个较大的值,以便上传大文件。

3.解决方法

通过查阅SpringBoot官方文档,我们发现该参数的默认值为-1,表示不限制文件大小。因此,我们可以将其设置为-1即可解决问题。

在application.properties文件中添加如下配置:

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

或者在application.yml文件中添加如下配置:

spring:
  servlet:
    multipart:
      max-request-size: -1

修改后,再次启动项目,发现启动成功了。

4.总结

通过这次解决问题的过程,我们了解了SpringBoot提供的文件上传限制参数,以及设置该参数可能会出现的问题及解决办法。希望本篇分享能够帮助到大家。

完整的application.properties文件如下:

# 应用名称
spring.application.name=demo

# 服务端口
server.port=8080

# 文件上传限制
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=512MB
spring.servlet.multipart.max-request-size=-1

# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# MyBatis配置
mybatis.mapper-locations=classpath:mapper/*.xml

猜你喜欢

转载自blog.csdn.net/liuqingup/article/details/131347759