SpringBoot中设置上传文件大小

解决SpringBoot中MultipartFile上传图片时遇到的10M大小限制问题。通过在yml文件中配置请求数据大小,适用于SpringBoot2.X版本。

工作中碰到在SpringBoot中使用MultipartFile 上传图片碰到了如下问题(通过网关统一上传的)

在这里插入图片描述
大致瞄了瞄,应该是请求的数据超过了10M(10485760 = 10 * 1024 * 1024)导致失败。
查了下资料,解决方法如下(本人使用的是SpringBoot2.X的版本)

在这里插入图片描述
在yml文件中进行大小配置即可。(若使用SpringBoot1.X请查看参考地址)

参考地址:
https://blog.youkuaiyun.com/qq_28379809/article/details/84978147

在 Spring Boot 项目中配置文件上传大小限制是常见的需求,尤其是在处理大文件上传时。Spring Boot 提供了简洁的配置方式,可以通过 `application.properties` 或 `application.yml` 文件进行设置。 ### 配置单个文件大小与请求总大小 Spring Boot 中通过 `spring.servlet.multipart.max-file-size` `spring.servlet.multipart.max-request-size` 属性来分别控制单个文件的最大大小整个请求的最大大小[^2]。例如,若希望支持最大为 50MB 的单个文件上传,并且允许一次请求上传多个文件总大小不超过 200MB,可以在 `application.properties` 中添加以下配置: ```properties spring.servlet.multipart.max-file-size=50MB spring.servlet.multipart.max-request-size=200MB ``` 如果使用的是 `application.yml`,则配置如下: ```yaml spring: servlet: multipart: max-file-size: 50MB max-request-size: 200MB ``` ### 配置更多上传相关参数 除了上述基本配置外,还可以进一步自定义上传行为,包括启用或禁用文件上传、指定上传文件的存储路径、设置文件写入磁盘的阈值等[^4]。以下是一个完整的配置示例: ```yaml spring: servlet: multipart: enabled: true location: /tmp/upload file-size-threshold: 10MB max-file-size: 50MB max-request-size: 200MB resolve-lazily: false ``` - `enabled`: 是否启用文件上传功能,默认为 `true`。 - `location`: 指定上传文件的临时存储路径。 - `file-size-threshold`: 当文件大小超过该值时,文件将被写入磁盘而不是内存,默认为 `0B`(全部写入内存)。 - `resolve-lazily`: 是否延迟解析上传的文件,默认为 `false`。 ### 文件大小校验逻辑 为了避免因文件过大而导致服务器错误,可以在上传前对文件大小进行校验。以下是一个 Java 方法示例,用于检查上传文件的大小是否符合要求[^3]: ```java /** * 判断文件大小 * @param file 上传的文件 * @param size 文件大小限制值 * @param unit 单位(B, K, M, G) * @return 如果文件大小限制范围内返回 true,否则返回 false */ public static boolean checkFileSize(MultipartFile file, int size, String unit) { long len = file.getSize(); double fileSize = 0; if ("B".equals(unit.toUpperCase())) { fileSize = (double) len; } else if ("K".equals(unit.toUpperCase())) { fileSize = (double) len / 1024; } else if ("M".equals(unit.toUpperCase())) { fileSize = (double) len / 1048576; } else if ("G".equals(unit.toUpperCase())) { fileSize = (double) len / 1073741824; } return fileSize <= size; } ``` 此方法可用于前端提示用户选择合适大小的文件,从而避免不必要的上传失败。 ### 默认限制说明 需要注意的是,Spring Boot 对上传文件大小有默认限制:单个文件最大为 1MB,单次请求所有文件总大小最大为 10MB[^5]。因此,在需要处理更大的文件时,必须显式调整这些配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值