【发布时间】:2018-06-01 07:20:07
【问题描述】:
以下是验证文件扩展名的验证器
FileExtensionValidator.java
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.springframework.web.multipart.MultipartFile;
public class FileExtensionValidator implements ConstraintValidator<ValidExtension, MultipartFile> {
@Override
public void initialize(ValidExtension extension) {
}
@Override
public boolean isValid(MultipartFile file, ConstraintValidatorContext context) {
String extension = "";
if (null != file) {
extension = file.getName();
}
return (null != extension) && (extension.endsWith(".png") || extension.endsWith(".PNG")
|| extension.endsWith(".JPEG") || extension.endsWith(".jpeg")) ? true : false;
}
}
这里是验证界面 ValidExtension.java
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.*;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
@Target({ METHOD, FIELD, ANNOTATION_TYPE, PARAMETER, TYPE })
@Retention(RUNTIME)
@Constraint(validatedBy = FileExtensionValidator.class)
@Documented
public @interface ValidExtension {
String message() default "Not a valid Email";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
这是使用的控制器
@RequestMapping(value = "/file/upload", method = POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = APPLICATION_JSON_VALUE)
public BaseResponse uploadFile(@ValidExtension @RequestParam("file") MultipartFile file) {
return fileStorageService.upload(file);
}
在 pom 中添加了以下内容
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.5.1</version>
</dependency>
使用的 Spring 版本:4
我确实在验证逻辑中得到了我的方法。如果我缺少任何基本步骤,请让我理解。已经检查了基本教程都说相同的步骤。
提前致谢。
【问题讨论】:
-
它以什么方式不起作用?它显示任何错误或只是绕过任何扩展?,你也检查过吗? Custom validation for RequestParam doesn't work with Spring MVC
-
@Rcordoval 代码从不进入 isValid 方法
-
查看更新评论
-
工作得很好,这就是atl ton ???? @rcordoval
标签: java spring validation spring-boot