spring boot限制指定路径上传文件大小
时间: 2023-07-29 09:11:17 浏览: 47
可以在Spring Boot中使用MultipartResolver来限制指定路径上传文件大小。以下是一个示例:
首先,在你的配置类中添加以下Bean:
```java
@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
// 设置最大上传文件大小为10MB
resolver.setMaxUploadSize(10 * 1024 * 1024);
return resolver;
}
```
然后,在你的Controller中,使用@RequestParam注解来获取上传的文件,并在方法上添加@SizeLimit注解来限制上传文件的大小。例如:
```java
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) {
// 处理上传文件
return "upload success";
}
```
```java
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Constraint(validatedBy = SizeLimitValidator.class)
public @interface SizeLimit {
String message() default "File size exceeds the limit";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
long value() default Long.MAX_VALUE;
}
```
```java
public class SizeLimitValidator implements ConstraintValidator<SizeLimit, MultipartFile> {
private long maxSize;
@Override
public void initialize(SizeLimit constraintAnnotation) {
this.maxSize = constraintAnnotation.value();
}
@Override
public boolean isValid(MultipartFile value, ConstraintValidatorContext context) {
if (value == null) {
return true;
}
return value.getSize() <= maxSize;
}
}
```
现在,当你上传大于10MB的文件时,将会得到一个错误消息"File size exceeds the limit"。注意,上传文件大小的单位是字节。