文件上传在不同场景下有不同的限制规则,而Spring boot提供的限制文件大小的配置是针对全局生效的,因此需要提供一种可针对每个上传接口指定不同的文件大小限制的校验方式
1. 编程式校验
在每个处理逻辑中通过org.springframework.web.multipart.MultipartFile#getSize获取上传文件的大小,进而验证其大小是否符合条件
因为实现简单,这种方式看起来也可以接受。但是同样的逻辑要在多个上传场景中使用,即便将其封装为工具类,也需要在多个地方调用,从单一职责方面考虑,这种方式欠佳。
2. 声明式校验
说到校验,就不得不提一下hibernate-validator校验框架了,使用一个注解就可以完成对请求参数的校验,而不需要手动编写额外的代码。
可惜的是我并没有找到可以校验MultipartFile类型的注解。既然叫框架,没有扩展性怎么好意思呢,于是乎我分析了下@Max注解生效的实现原理,经过与源码的友好交流,终于让我发现了ConstraintValidator这个玩意

它就是校验各种数据的Validator(感觉翻译成中文就少了些感觉,所以就先这样吧)的抽象,其中A就是注解,T就是要校验的数据类型
可以发现,它的实现类非常多,这些都是针对不同数据类型的Validator。看人家这些类的命名,非常直观,值得我们借鉴。

随手挑一个出来模仿,毕竟

本文介绍了如何在Spring Boot中实现文件大小的校验,包括编程式校验、声明式校验(自定义Hibernate Validator注解)以及前端校验。通过自定义注解,可以方便地针对每个上传接口指定不同的文件大小限制。

5648

被折叠的 条评论
为什么被折叠?



