CommonsMultipartFile 无法解析为类型

use*_*026 6 spring jar

将 spring 从旧版本升级到 Spring 6.0.4 后,
我注意到此文件已移动:

从这里(Spring docs 4.3.x for CommonsMultipartFile

6.0.4 上的 web不再 像 4.3.x 那样具有公共资源

这个文件移到哪里了?

我尝试将其包含在我的 pom 中,但没有帮助

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

更新

将 spring-web 版本从 6.0.0 降低到 5.3.25 解决了问题
,但 5.3.25 有 漏洞

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <!--  version>${spring.version}</version    !-->
    <!--  some issue  CommonsMultipartFile is missing  starting with v 6.0.0 !-->
    <version> version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

dek*_*ard 13

根据Spring 6 中的https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-6.x

几个过时的基于 Servlet 的集成已被删除:例如 Apache Commons FileUpload (org.springframework.web.multipart.commons.CommonsMultipartResolver)
...
我们建议使用 org.springframework.web.multipart.support.StandardServletMultipartResolver 进行多部分文件上传

显然CommonsMultipartFile也消失了。

您可以commons-fileupload从项目中删除依赖项,并且在控制器中您可以使用MultipartFile与之前几乎相同的方法CommonsMultipartFile,或者MultipartHttpServletRequest

@RestController
class MyController {
    @PostMapping(path = "/upload)
    public ResponseEntity<SomeResult> upload(... , @RequestPart MultipartFile file1) {
        ...
    }
    
    @PostMapping(path = "/upload2")
    public ResponseEntity<SomeResult> upload2(MultipartHttpServletRequest request,
                                    ...) {
        MultipartFile multipartFile = request.getFile("file1");
        InputStream inputStream = multipartFile.getInputStream();
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)