Spring Boot 分段上传最大文件大小 分段文件上传 Spring Boot
我正在将 Java 应用程序从非常旧的 Spring Boot 版本更新到版本 3.2.1。该应用程序的功能之一仅仅是将文件上传到 S3。我可以毫无问题地上传小于 1MB 的文件,但上传更大的文件会出现422错误:message : "Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes."
我已经设置了这些 application.yml 参数并通过在运行时打印它们来验证它们:
spring:
servlet:
multipart:
enabled: true
max-file-size: 10MB
max-request-size: 10MB
server:
tomcat:
max-swallow-size: -1
max-http-form-post-size: -1
我尝试将一个 bean 添加到我的应用程序中,并验证它在应用程序启动期间正在运行:
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setMaxFileSize(DataSize.ofBytes(512000000L));
factory.setMaxRequestSize(DataSize.ofBytes(512000000L));
return factory.createMultipartConfig();
}
我认为这些更改最大文件大小的尝试无效,因为错误消息中首发的顶部不会更改。
我查阅了大量 StackOverflow 和其他文章,包括:
- Spring Boot多部分文件上传
- 设置在Tomcat上运行时上传的最大文件大小
- Spring中的MaxUploadSizeExceededException-但是建议 MultipartResolver bean 无法为我编译,因为类 CommonsMultipartResolver 不存在
我正在使用这些库的 3.2.1 版本(还有更多):
- 弹簧启动启动器
- spring-boot-启动器-执行器
- spring-boot-启动器-hateoas
- spring-boot-starter-数据-jpa
- spring-boot-starter-数据休息
...并且自动包含内置 Tomcat 10.1.17。
我跟踪了 Tomcat 代码,并在 Request.parseParts() 和 FileUploadBase.setSizeMax() 中设置了断点。有趣的是,当我上传小于 1MB 的文件时,会遇到断点,并且最大的文件大小是我配置的值。当我上传更大的文件时,不会命中这些断点。因此,某些地方的其他代码必须使用不同的限制来强制执行最大大小。
此时我陷入了困境,因为我一直在尝试找到所有的建议。
- 本文标签: 家庭宠物
- 本文链接: https://www.coder6.net/article/2358
- 版权声明: 本文由蚂蚁原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
热门推荐
-
浏览(166) 评论(0)