Spring Boot 设置上传文件大小限制

在开发 Web 应用程序时,我们通常需要处理文件上传功能。为了确保系统的安全性和稳定性,我们需要限制上传文件的大小。本篇博客将介绍如何使用 Spring Boot 设置上传文件大小限制。

1. application.properties 配置文件

Spring Boot 提供了一种简单的方式来配置上传文件大小限制。首先,我们需要在 application.properties(或 application.yml)配置文件中添加以下属性:

bash 复制代码
# 设置上传文件的最大大小,默认为 1MB 
spring.servlet.multipart.max-file-size=1MB 

# 设置请求中最大允许的文件大小,默认为 10MB 
spring.servlet.multipart.max-request-size=10MB

在上述示例中,我们设置了两个属性。

multipart.max-file-size 属性用于设置单个上传文件的最大大小,

multipart.max-request-size 属性则用于设置整个请求中允许的最大文件大小。

2. 单个文件大小限制

如果你只关心单个上传文件的大小限制,可以只设置 multipart.max-file-size 属性。例如,如果要将最大文件大小限制为 5MB,可以这样配置:

XML 复制代码
spring.servlet.multipart.max-file-size=5MB

3. 整个请求大小限制

如果你更关心整个请求中包含的所有文件的大小限制,可以只设置 multipart.max-request-size 属性。例如,如果要将整个请求的最大文件大小限制为 20MB,可以这样配置:

XML 复制代码
spring.servlet.multipart.max-request-size=20MB

4. 单位转换

在配置文件中,你可以使用以下单位来指定文件大小:

  • KB:千字节
  • MB:兆字节
  • GB:吉字节
  • TB:太字节

5. 自定义异常处理

当上传的文件超过限制大小时,Spring Boot 默认会抛出 MaxUploadSizeExceededException 异常。你可以通过自定义全局异常处理器来捕获该异常,并返回友好的错误信息给用户。

java 复制代码
@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(MaxUploadSizeExceededException.class)
    public ResponseEntity<String> handleMaxUploadSizeExceededException(
            MaxUploadSizeExceededException ex) {
        return ResponseEntity.status(HttpStatus.BAD_REQUEST)
                .body("上传文件大小超过限制");
    }
}

在上述示例中,我们使用 @ControllerAdvice 注解和 @ExceptionHandler 注解来定义全局异常处理器,并处理 MaxUploadSizeExceededException 异常。

总结

通过本篇博客的介绍,我们了解了如何使用 Spring Boot 设置上传文件大小限制。通过配置 application.properties 文件中的 spring.servlet.multipart.max-file-sizespring.servlet.multipart.max-request-size 属性,我们可以轻松地控制上传文件的大小限制。此外,我们还学习了如何自定义异常处理,以提供更友好的错误信息。

相关推荐
我是一颗柠檬几秒前
【MySQL全面教学】MySQL性能优化实战Day13(2026年)
数据库·后端·sql·mysql·性能优化·database
向量引擎11 分钟前
从零起步,如何打造专属向量引擎 API 中转工作流?
java·服务器·前端
LJianK112 分钟前
普通接口,用到getter和setter方法的地方,jackson转换
java
辰海Coding15 分钟前
MiniSpring框架学习-分解 Dispatcher
java·学习·spring·架构
AI人工智能+电脑小能手19 分钟前
【大白话说Java面试题 第84题】【Mysql篇】第14题:为什么用 InnoDB 存储引擎的表建议用整型的自增主键?
java·开发语言·数据库·mysql·面试
小江的记录本26 分钟前
【JVM虚拟机】JVM调优:常用JVM参数、调优核心指标、OOM排查、GC日志分析、Arthas工具使用(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
程序员cxuan38 分钟前
我花了两天时间,终于把 Codex 额度掉太快的问题整明白了!!
人工智能·后端·程序员
IT_陈寒39 分钟前
Vue这个动态响应坑把我整不会了
前端·人工智能·后端
金銀銅鐵39 分钟前
[Java] 用图形化界面演示 iadd, isub, iconst_<i> 指令的效果
java·后端·python
AskHarries1 小时前
做国内还是出海
后端