You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot WebFlux如何设置FilePart类型文件上传的最大大小限制

WebFlux Mono上传限制文件大小无第三方依赖解决方案

原有方案失效原因

  • 你配置的spring.servlet.multipart是Spring MVC(Servlet技术栈)的专属配置,不适用于WebFlux响应式栈,所以完全不会生效
  • SynchronossPartHttpMessageReader是旧版WebFlux的可选解析实现,本身依赖第三方组件,未引入依赖自然会抛出类找不到异常

最优解决方案:直接使用WebFlux专属配置(零代码、无第三方依赖)

Spring Boot 2.4+ 已经默认使用Spring内置的DefaultPartHttpMessageReader处理文件上传,无需任何额外依赖,直接在配置文件中添加以下参数即可生效:

# 单个文件最大大小
spring.webflux.multipart.max-file-size=30KB
# 整个请求最大大小
spring.webflux.multipart.max-request-size=30KB
# 内存缓存阈值,超过该大小的文件会落盘临时存储
spring.webflux.multipart.max-in-memory-size=30KB

该方案是Spring官方原生支持的,不需要编写任何自定义配置类,也不需要引入第三方包,完全满足常规的文件上传限制需求。

备用方案:自定义Http消息编解码器(适合有复杂定制需求的场景)

如果你需要更灵活的控制(比如限制上传文件数量、自定义临时文件落盘路径等),可以直接使用内置的DefaultPartHttpMessageReader替换原有Synchronoss实现,不需要引入第三方依赖,配置类示例如下:

import org.springframework.util.unit.DataSize;
import org.springframework.http.codec.multipart.DefaultPartHttpMessageReader;
import org.springframework.http.codec.multipart.MultipartHttpMessageReader;

@Configuration
@EnableWebFlux
public class WebConfiguration implements WebFluxConfigurer {
    @Override
    public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
        DefaultPartHttpMessageReader partReader = new DefaultPartHttpMessageReader();
        // 单个文件最大大小
        partReader.setMaxPartSize(DataSize.ofKilobytes(30));
        // 最大允许的文件数量
        partReader.setMaxParts(1);
        // 内存缓存阈值
        partReader.setMaxInMemorySize(30 * 1024);
        partReader.setEnableLoggingRequestDetails(true);
        
        MultipartHttpMessageReader multipartReader = new MultipartHttpMessageReader(partReader);
        multipartReader.setEnableLoggingRequestDetails(true);
        configurer.defaultCodecs().multipartReader(multipartReader);
    }
}

内容的提问来源于stack exchange,提问作者Joseph Freeman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:12:02