欢迎来到淼淼之森的个人小站。  交流请加我微信好友: studyjava。  也欢迎关注同名公众号:Java学习之道

org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes. 置顶!

  |   0 评论   |   0 浏览

问题分析

从报错信息可以看出,org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException 表示上传的文件大小超过了允许的最大限制。具体来说,Tomcat 默认的单个文件上传大小限制为 1MB(即 1048576 字节),而当前上传的文件大小超出了这个限制。

解决方案: 要解决这个问题,可以通过以下几种方式调整文件上传的大小限制:

方法一:修改 SpringBoot 配置

在 SpringBoot 项目中,可以通过 application.propertiesapplication.yml 文件来调整文件上传的大小限制。

1. 使用 application.properties

# 设置单个文件的最大大小(例如 10MB)
spring.servlet.multipart.max-file-size=10MB

# 设置整个请求的最大大小(例如 20MB)
spring.servlet.multipart.max-request-size=20MB

2. 使用 application.yml

spring:
  servlet:
    multipart:
      max-file-size: 10MB # 单个文件的最大大小
      max-request-size: 20MB # 整个请求的最大大小

方法二:修改 Tomcat 的配置

如果使用的是嵌入式 Tomcat(Spring Boot 默认使用),可以通过自定义 WebServerFactoryCustomizer 来调整 Tomcat 的文件上传限制。

代码示例:

import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component;

@Component
public class TomcatConfig implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        // 设置单个文件的最大大小(例如 10MB)
        factory.addConnectorCustomizers(connector -> connector.setMaxPostSize(10 * 1024 * 1024));
    }
}

方法三:修改外部 Tomcat 的配置

如果项目部署在独立的 Tomcat 容器中,可以修改 server.xml 文件中的 <Connector> 配置。

示例:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           maxPostSize="10485760" /> <!-- 单位为字节,此处设置为 10MB -->

方法四:动态处理文件大小限制

如果需要根据业务逻辑动态调整文件大小限制,可以在控制器中捕获异常并返回友好的提示信息。

代码示例:

import com.example.demo.model.ResultData;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.multipart.MaxUploadSizeExceededException;

@RestControllerAdvice
public class FileUploadExceptionAdvice {

//    @ExceptionHandler(MaxUploadSizeExceededException.class)
//    public String handleMaxSizeException(MaxUploadSizeExceededException exc) {
//        return "上传的文件过大,请确保文件大小不超过 10MB!";
//    }

    @ExceptionHandler(MaxUploadSizeExceededException.class)
    public ResultData<String> handleMaxSizeException(MaxUploadSizeExceededException exc) {
        return ResultData.getFail("上传的文件过大,请确保文件大小不超过限制!");
    }
    
}

注意事项

单位换算:

1MB = 1024KB = 1024 * 1024 字节

在配置文件或代码中,务必确保单位一致。

安全性:

调整文件大小限制时,需考虑服务器性能和安全性,避免因过大的文件上传导致资源耗尽。

测试验证:

修改配置后,建议上传不同大小的文件进行测试,确保配置生效且系统稳定。

通过以上方法,可以有效解决 FileSizeLimitExceededException 报错问题。


标题:org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.
作者:mmzsblog
地址:https://www.mmzsblog.cn/articles/2025/04/17/1744854202961.html

如未加特殊说明,文章均为原创,转载必须注明出处。均采用CC BY-SA 4.0 协议

本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。若本站转载文章遗漏了原文链接,请及时告知,我们将做删除处理!文章观点不代表本网站立场,如需处理请联系首页客服。
• 网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。
• 公众号转载请联系网站首页的微信号申请白名单!

个人微信公众号 ↓↓↓                 

微信搜一搜 Java 学习之道