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;

import javax.servlet.MultipartConfigElement;

魔法映像企业网站管理系统
魔法映像企业网站管理系统

技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作

下载

@Configuration public class UploadConfig {

@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。

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

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

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

844

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

743

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

740

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

400

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

447

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

431

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16926

2023.08.03

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.23

热门下载

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

精品课程

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

共23课时 | 2.8万人学习

C# 教程
C# 教程

共94课时 | 7.4万人学习

Java 教程
Java 教程

共578课时 | 50.2万人学习

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

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