spring-boot - 在 FileSizeLimitExceededException 之后只允许一个文件上传其他文件
问题描述
我已经使用 springboot 设置了一个应用程序服务器,它允许上传多个文件。我已经使用以下内容配置了 application.properties:
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=20MB
使用邮递员运行请求时,我在名为“files”的键下上传 3 个文件
File-1 is 11MB
File-2 is 1MB
File-3 is 1MB
请求失败并出现以下错误:
"message": "Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field files exceeds its maximum permitted size of 10485760 bytes."
我知道这是因为为服务器提供了大小限制。但是有没有办法处理异常,只有一个文件被排除在上传之外,而其他文件被允许。
尝试使用异常处理程序来获取请求。但是这个处理程序应用于整个请求,导致所有文件都被跳过。
@PostMapping("/file-upload-service/file-uploader")
public List<UploadFileResponse> uploadMultipleFiles(@RequestParam String destination, @RequestParam("files") MultipartFile[] files) throws FileStorageException {
logger.info("Uploading multiple files...");
Date uploadDate = new Date();
logger.info("Upload operation started at {}", uploadDate);
return Arrays.asList(files)
.stream()
.map(file -> uploadFile(destination, file))
.collect(Collectors.toList());
}
}
解决方案
推荐阅读
- javascript - 动态 React 路由器和组件不可能?
- reactjs - 为什么只有在上传文件时才更新错误的元素?
- kubernetes - 如何在 terraform 中使用 nginx 入口为 kubernetes 创建路由 - scaleway
- android - 在 Android Studio 中使用 Open3d
- python - RedisQueue 可以和异步函数一起使用吗
- r - 如何将聚合计数数据重组为个人观察?
- kotlin - 如何制作 StageredRecyclerView?
- c - 如何通过循环从 10 个数字中获取最小值/最大值?(C语言)
- javascript - 如何在音频元素中获取当前时间 HH:MM:SS?
- excel - VBA清除工作表并从其他工作表复制数据