SpringBoot中实现自定义注解用于文件验证(大小、扩展名、MIME类型)
import org.springframework.web.multipart.MultipartFile;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.Arrays;
public class FileValidator implements ConstraintValidator<FileConstraint, MultipartFile> {
private long maxSize;
private String[] allowedExtensions;
private String[] allowedMimeTypes;
@Override
public void initialize(FileConstraint constraintAnnotation) {
this.maxSize = constraintAnnotation.maxSize();
this.allowedExtensions = constraintAnnotation.allowedExtensions();
this.allowedMimeTypes = constraintAnnotation.allowedMimeTypes();
}
@Override
public boolean isValid(MultipartFile value, ConstraintValidatorContext context) {
if (value == null) {
return false;
}
// 检查文件大小
if (value.getSize() > maxSize) {
return false;
}
// 检查文件扩展名
String extension = getFileExtension(value.getOriginalFilename());
if (!Arrays.asList(allowedExtensions).contains(extension)) {
return false;
}
// 检查MIME类型
if (!Arrays.asList(allowedMimeTypes).contains(value.getContentType())) {
return false;
}
return true;
}
private String getFileExtension(String filename) {
return filename.substring(filename.lastIndexOf(".") + 1);
}
}
这个代码实例展示了如何实现一个自定义的文件验证器,用于检查上传文件的大小、扩展名和MIME类型是否符合预期。它使用了Spring框架的ConstraintValidator
接口,并且可以作为Spring Boot项目中文件上传验证的一个参考实现。
评论已关闭