spring boot通过yml文件限制指定路径上传文件大小
时间: 2023-07-31 14:10:59 浏览: 143
可以通过在`application.yml`文件中添加以下配置来限制指定路径上传文件的大小:
```yaml
spring:
servlet:
multipart:
max-file-size: 10MB # 限制单个文件上传大小
max-request-size: 100MB # 限制整个请求上传大小
application:
upload:
max-file-size: 5MB # 指定路径下允许上传的最大文件大小
```
其中,`max-file-size`表示单个文件上传的最大大小,`max-request-size`表示整个请求上传的最大大小。`upload.max-file-size`表示指定路径下允许上传的最大文件大小。
接下来,需要在代码中指定需要限制大小的路径。例如,我们需要限制`/uploads`路径下的文件上传大小,可以在`application.yml`文件中添加如下配置:
```yaml
spring:
application:
upload:
max-file-size: 5MB
```
然后,在代码中添加如下配置:
```java
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Value("${spring.application.upload.max-file-size}")
private String maxFileSize;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/uploads/**")
.addResourceLocations("file:./uploads/")
.setCachePeriod(0)
.resourceChain(true)
.addResolver(new PathResourceResolver() {
@Override
protected Resource getResource(String resourcePath, Resource location) throws IOException {
Resource requestedResource = location.createRelative(resourcePath);
long fileSize = requestedResource.contentLength();
if (fileSize > Long.parseLong(maxFileSize)) {
throw new RuntimeException("File size exceeds limit");
}
return requestedResource;
}
});
}
}
```
上述代码中,`addResourceHandlers`方法可以添加自定义的静态资源处理器。我们通过`addResourceHandler("/uploads/**")`指定需要处理的路径为`/uploads/**`,并通过`addResourceLocations("file:./uploads/")`指定实际文件存储的路径为`./uploads/`。在`addResolver`方法中,我们添加了一个自定义的资源解析器,用于检查上传文件的大小是否超过了限制。如果超过了限制,则抛出一个运行时异常。
这样,我们就可以限制指定路径下上传文件的大小了。
阅读全文