springboot自带文件类型限制
时间: 2023-09-07 09:14:50 浏览: 116
Spring Boot没有自带文件类型限制的功能,但是可以借助第三方库来实现。
常用的第三方库包括:
1. Apache Commons FileUpload:可以限制上传文件的大小和类型。
2. Spring Framework MultipartResolver:可以限制上传文件的大小和类型。
3. Hibernate Validator:可以在后端校验上传文件的类型和大小。
示例代码:
1. 使用Apache Commons FileUpload限制上传文件类型:
```java
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) {
String fileName = file.getOriginalFilename();
String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1);
if (!Arrays.asList("jpg", "jpeg", "png", "gif").contains(fileExtension)) {
// 不是支持的图片类型,返回错误信息
return "error";
}
// 处理上传文件
return "success";
}
```
2. 使用Hibernate Validator限制上传文件类型和大小:
```java
public class FileUploadForm {
@NotNull
@Size(max = 10 * 1024 * 1024, message = "文件大小不能超过10MB")
@AllowedFileTypes(types = {"jpg", "jpeg", "png", "gif"}, message = "只能上传图片文件")
private MultipartFile file;
// getter/setter
}
@PostMapping("/upload")
public String upload(@Valid FileUploadForm form) {
// 处理上传文件
return "success";
}
```
其中,AllowedFileTypes是自定义的注解,实现方式如下:
```java
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {AllowedFileTypesValidator.class})
public @interface AllowedFileTypes {
String[] types();
String message() default "文件类型不支持";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
public class AllowedFileTypesValidator implements ConstraintValidator<AllowedFileTypes, MultipartFile> {
private String[] allowedTypes;
@Override
public void initialize(AllowedFileTypes constraintAnnotation) {
allowedTypes = constraintAnnotation.types();
}
@Override
public boolean isValid(MultipartFile file, ConstraintValidatorContext context) {
if (file == null) {
return true;
}
String fileName = file.getOriginalFilename();
String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1);
return Arrays.asList(allowedTypes).contains(fileExtension);
}
}
```
阅读全文