0

0

SpringBoot处理XML文件上传 SpringBoot如何配置上传大小

幻夢星雲

幻夢星雲

发布时间:2026-01-24 09:42:46

|

556人浏览过

|

来源于php中文网

原创

spring boot 内置 tomcat 默认单文件上传限制为 1mb、总请求 10mb;xml 因结构冗余易超限,触发 filesizelimitexceededexception;需在 application.yml 中配置 spring.servlet.multipart.max-file-size 等参数,或通过 multipartconfigelement bean 动态设置,并注意外部 tomcat 的 maxpostsize 及云网关限制。

springboot处理xml文件上传 springboot如何配置上传大小

Spring Boot 默认上传限制是多少?为什么 XML 文件常踩坑

Spring Boot 内置 Tomcat 默认只允许单文件 ≤ 1MB(即 1048576 字节),整个请求 ≤ 10MB。XML 文件虽是文本,但带命名空间、缩进、注释或嵌套结构时,很容易超过 1MB——比如一个导出的财务报表 XML 或 CAD 元数据 XML,动辄几 MB。一旦超限,你会看到这类错误:org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededExceptionMaxUploadSizeExceededException

application.yml 中最简配置方式(推荐初试/运维快速生效)

这是修改成本最低、见效最快的方案,适用于大多数标准部署场景。注意:Spring Boot 2.0+ 统一使用 spring.servlet.multipart.* 前缀,旧版 spring.http.multipart.* 已废弃,用错会静默失效。

spring:
  servlet:
    multipart:
      enabled: true
      max-file-size: 20MB
      max-request-size: 50MB
      file-size-threshold: 2MB
  • max-file-size:单个 XML 文件上限,设为 20MB 可覆盖绝大多数业务 XML
  • max-request-size:整个 HTTP 请求体总大小,含多个文件 + 表单字段,建议 ≥ 单文件限制 × 并发数预估
  • file-size-threshold:≤ 该值的文件直接存内存,否则写临时磁盘;设 2MB 可避免小 XML 频繁 IO,但别设太高(如 >10MB),否则 GC 压力大

Java 配置类方式(适合需要动态控制或兼容老版本)

当你要根据环境(dev/test/prod)差异化设置,或集成自定义拦截逻辑(如按用户角色限流),用 @Configuration + MultipartConfigElement 更灵活。注意:该 Bean 必须在 Spring 容器启动早期注册,否则无效。

import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.unit.DataSize;
<p>import javax.servlet.MultipartConfigElement;</p><div class="aritcle_card flexRow">
                                                        <div class="artcardd flexRow">
                                                                <a class="aritcle_card_img" href="/xiazai/code/10717" title="魔法映像企业网站管理系统"><img
                                                                                src="https://img.php.cn/upload/webcode/000/000/013/176344020398619.jpg" alt="魔法映像企业网站管理系统"  onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
                                                                <div class="aritcle_card_info flexColumn">
                                                                        <a href="/xiazai/code/10717" title="魔法映像企业网站管理系统">魔法映像企业网站管理系统</a>
                                                                        <p>技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作</p>
                                                                </div>
                                                                <a href="/xiazai/code/10717" title="魔法映像企业网站管理系统" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
                                                        </div>
                                                </div><p>@Configuration
public class UploadConfig {</p><pre class='brush:php;toolbar:false;'>@Bean
public MultipartConfigElement multipartConfigElement() {
    MultipartConfigFactory factory = new MultipartConfigFactory();
    factory.setMaxFileSize(DataSize.ofMegabytes(20));
    factory.setMaxRequestSize(DataSize.ofMegabytes(50));
    // ⚠️ 不要用字符串如 "20MB",低版本 Spring Boot 会解析失败
    return factory.createMultipartConfig();
}

}

  • 必须用 DataSize.ofMegabytes() 等类型安全方法,避免字符串解析歧义(如 "20mb" vs "20MB"
  • 如果项目用了 Undertow 或 Jetty,此配置不生效——它们不认 MultipartConfigElement,得查对应服务器文档
  • 若同时存在 application.yml 和该 Bean,Bean 优先级更高,但容易引发配置冲突,建议二选一

别漏掉外部 Tomcat 的 maxPostSize(上线前必查)

如果你把 Spring Boot 打成 war 包部署到独立 Tomcat(非内嵌),application.yml 的配置只管 Spring 层,Tomcat 自己还会校验 maxPostSize。默认是 2MB,比 Spring 还严——这时即使 Spring 放开了,请求也卡在容器层,报错无提示或直接 400。

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           maxPostSize="52428800" /> <!-- 50MB,单位是字节 -->
  • maxPostSize 单位是**字节**,不是 MB,50 * 1024 * 1024 = 52428800,手算易错,建议写注释
  • 改完 server.xml 后必须重启 Tomcat,热加载不生效
  • 云环境(如阿里云 EDAS、腾讯 TKE)可能有网关层额外限制(如 API 网关默认 10MB),需同步确认

真正上线前,拿一个真实大小的 XML 文件(比如 18MB 的 ISO 20022 报文)走一遍上传链路,别只测 2MB。很多问题出在“配置写了但没生效”或者“多层网关叠加限制”,而不是代码本身。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
如何配置Tomcat环境变量
如何配置Tomcat环境变量

配置Tomcat环境变量需要在系统中添加CATALINA_HOME变量,并将Tomcat的安装路径添加到PATH变量中。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

117

2023.10.26

idea如何集成Tomcat
idea如何集成Tomcat

idea集成Tomcat的步骤:1、添加Tomcat服务器配置;2、配置项目部署;3、运行Tomcat服务器;4、访问项目;5、注意事项;6、关闭Tomcat服务器。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

173

2024.02.23

怎么查看Tomcat源代码
怎么查看Tomcat源代码

查看Tomcat源代码的步骤:1、下载Tomcat源代码;2、在IDEA中导入Tomcat源代码;3、查看源代码;4、理解Tomcat的工作原理;5、参与社区和贡献;6、注意事项;7、持续学习和更新;8、使用工具和插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

98

2024.02.23

常见的tomcat漏洞有哪些
常见的tomcat漏洞有哪些

常见的tomcat漏洞有:1、跨站脚本攻击;2、跨站请求伪造;3、目录遍历漏洞;4、缓冲区溢出漏洞;5、配置漏洞;6、第三方组件漏洞。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

170

2024.02.23

tomcat日志乱码怎么解决
tomcat日志乱码怎么解决

tomcat日志乱码的解决办法:1、修改tomcat的日志编码设置;2、检查ide的编码设置;3、检查操作系统的编码设置;4、使用过滤器处理日志;5、检查外部系统的编码设置;6、检查文件编码方式等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

158

2024.02.23

weblogic和tomcat有哪些区别
weblogic和tomcat有哪些区别

weblogic和tomcat的区别:1、功能;2、性能;3、规模;4、价格;5、安全性;6、配置和管理;7、社区支持;8、集成能力;9、升级和更新;10、可靠性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

200

2024.02.23

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

244

2024.02.23

tomcat启动闪退怎么解决
tomcat启动闪退怎么解决

tomcat启动闪退的解决办法:1、检查java环境;2、检查环境变量配置;3、检查端口被占用;4、检查配置文件编码;5、检查启动时需要的配置文件;6、检查相关文件是否丢失;7、检查防火墙和杀毒软件设置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

169

2024.02.23

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.3万人学习

C# 教程
C# 教程

共94课时 | 11.1万人学习

Java 教程
Java 教程

共578课时 | 80.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号