Spring图片上传API:已校验MIME类型,仍需校验零文件大小吗?
Spring图片上传API的文件校验问题解析
你的校验逻辑与配置
你目前的伪代码校验逻辑:
// 伪代码 MultipartFile image if image.contentType != "image/*" then throw if image.size == 0 then throw
同时通过配置限制了最大文件大小:
# 通过配置文件校验最大文件大小 spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB
是否仍需校验文件大小为零的情况?
必须保留这个校验,原因有两点:
- Spring的
max-file-size和max-request-size只限制上传文件的最大体积,完全管不了零大小的空文件; - 空文件可能被伪装成图片类型(比如手动设置Content-Type为image/*),这类文件没有任何有效图片数据,后续存储、解析或展示环节都会报错,提前拦截能避免后续不必要的问题。
是否存在零大小的图片MIME类型文件?
存在。比如:
- 用户误上传的空文件,被系统或客户端错误标记为image/*类型;
- 恶意构造的空文件,手动指定Content-Type为image/jpeg、image/png等图片类型,这类文件没有任何图片的头部、像素等核心数据,本质是无效文件。
内容的提问来源于stack exchange,提问作者양정훈
相关产品推荐
相关产品推荐

