Spring Boot 文件上传大小配置错误解决方案

发布于:2025-06-28 ⋅ 阅读:(12) ⋅ 点赞:(0)

问题描述

在Spring Boot应用中出现以下错误:

Failed to bind properties under 'spring.servlet.multipart.max-file-size’ to org.springframework.util.unit.Datasize
Property:spring.servlet.multipart.max-file-sizeValue: 10Mb
Origin: URL [file:./application-dev.yml]:23:22
Reason:failed to convert java.lang.String to org.springframework.util.unit.Datasize

错误原因

  1. 格式不正确:Spring Boot 2.x及以上版本使用DataSize类型处理大小配置

  2. 单位错误:使用了Mb而不是MB

  3. 大小写敏感:Spring Boot对单位的大小写有严格要求

解决方案

正确配置格式

application.ymlapplication.properties中使用以下格式:

YAML格式
spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB
Properties格式
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB

可用单位

Spring Boot接受的存储单位(区分大小写):

单位 说明 示例
B 字节 1024B
KB 千字节(1024B) 10KB
MB 兆字节(1024KB) 10MB
GB 千兆字节(1024MB) 1GB
TB 万亿字节(1024GB) 1TB

常见错误写法

  1. 使用小写单位:10mb ❌

  2. 使用比特单位:10Mb ❌ (Mb表示兆比特,不是兆字节)

  3. 值与单位间有空格:10 MB ❌

  4. 使用旧版格式:maxFileSize ❌ (Spring Boot 2.x后已弃用)

完整配置示例

spring:
  servlet:
    multipart:
      enabled: true
      max-file-size: 20MB       # 单个文件最大大小
      max-request-size: 50MB    # 整个请求最大大小
      file-size-threshold: 1MB  # 文件大小阈值,超过此值会写入磁盘
      location: /tmp            # 临时文件存储位置

注意事项

  1. 版本差异

    • Spring Boot 1.x使用maxFileSize等属性

    • Spring Boot 2.x+使用max-file-size等属性

  2. 实际限制

    • max-file-size ≤ max-request-size

    • 建议max-request-size设置为max-file-size的2-3倍

  3. 测试验证

    • 启动应用时检查控制台输出的配置值

    • 使用Postman或curl测试大文件上传

参考文档

通过以上配置调整,文件大小限制的绑定错误应该能够解决。如果问题仍然存在,建议检查Spring Boot版本并确保没有其他配置覆盖了这些值。


网站公告

今日签到

点亮在社区的每一天
去签到