Spring: DTO 文件大小验证
Spring: DTO file size validation
考虑两种控制器端点方法:
@RestController
public class MyController {
@PostMapping("/foo")
public ResponseEntity<?> foo(@Valid @RequestBody FooDto dto) {
// ..
}
@PostMapping("/bar")
public ResponseEntity<?> bar(@Valid @RequestBody BarDto dto) {
// ..
}
}
实际的 dto 包含多部分对象,定义为:
class FooDto {
@NotNull
private MultipartFile file;
@Size(min 2, max 40)
private String name;
}
当然 BarDto
也是如此。
目前,最大文件大小在 Spring 属性中全局定义为:
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
在理想情况下,我想从属性中控制每个单独的 dto 最大文件大小,例如如:
foo-dto.max-size=10MB
bar-dto.max-size=500MB
在不太理想的情况下,我想从 dto 内部控制大小 类,例如:
class BarDto {
@FileSize(max = '500MB') // <-- something like this
@NotNull
private MultipartFile file;
// ..
}
关于如何实现该目标的任何提示?是否存在用于文件验证的现有注释,与 Spring?
兼容
您可以通过 implementing
ConstraintValidator<SizeConstraint, String>
创建自己的注释,例如 SizeConstraint
和 Validator
。在那里您可以验证任何参数,包括 MultiPartFile
的大小
查看更多here
考虑两种控制器端点方法:
@RestController
public class MyController {
@PostMapping("/foo")
public ResponseEntity<?> foo(@Valid @RequestBody FooDto dto) {
// ..
}
@PostMapping("/bar")
public ResponseEntity<?> bar(@Valid @RequestBody BarDto dto) {
// ..
}
}
实际的 dto 包含多部分对象,定义为:
class FooDto {
@NotNull
private MultipartFile file;
@Size(min 2, max 40)
private String name;
}
当然 BarDto
也是如此。
目前,最大文件大小在 Spring 属性中全局定义为:
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
在理想情况下,我想从属性中控制每个单独的 dto 最大文件大小,例如如:
foo-dto.max-size=10MB
bar-dto.max-size=500MB
在不太理想的情况下,我想从 dto 内部控制大小 类,例如:
class BarDto {
@FileSize(max = '500MB') // <-- something like this
@NotNull
private MultipartFile file;
// ..
}
关于如何实现该目标的任何提示?是否存在用于文件验证的现有注释,与 Spring?
兼容您可以通过 implementing
ConstraintValidator<SizeConstraint, String>
创建自己的注释,例如 SizeConstraint
和 Validator
。在那里您可以验证任何参数,包括 MultiPartFile
查看更多here