我正在尝试做一个注释以验证控制器参数上的MultipartFile
列表,但似乎没有任何效果。没有抛出异常,根本没有错误。
我看了一些类似的问题,但是没有用。
接口:
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {ImageValidator.class})
public @interface ValidImage {
String message() default "Invalid image file";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
班级:
public class ImageValidator implements ConstraintValidator<ValidImage, List<MultipartFile>> {
@Override
public boolean isValid(
List<MultipartFile> listMultipartFile, ConstraintValidatorContext context) {
for (var multipartFile : listMultipartFile) {
var contentType = multipartFile.getContentType();
if (!isSupportedContentType(contentType)) {
context.disableDefaultConstraintViolation();
context
.buildConstraintViolationWithTemplate("Only JPG and PNG images are allowed.")
.addConstraintViolation();
return false;
}
}
return true;
}
private boolean isSupportedContentType(String contentType) {
var supportedContents = List.of("image/jpg", "image/jpeg", "image/png");
return supportedContents.contains(contentType);
}
}
用法:
@PostMapping(value = "images")
public ResponseEntity<List<ExerciseImageDTO>> uploadImages(
@RequestParam(value = "images", required = true) @ValidImage List<@Valid MultipartFile> images) {
.......
return ResponseEntity.ok(createdImages);
}
答案 0 :(得分:0)
您需要像这样在控制器类上使用flutter run
@Validated