Spring6中删除了CommonsMultipartResolver类后,使用springmvc如何上传文件

这篇具有很好参考价值的文章主要介绍了Spring6中删除了CommonsMultipartResolver类后,使用springmvc如何上传文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 在新的Spring6中,官方删除了之前上传文件使用的CommonsMultipartResolver类,导致之前的上传文件方法行不通了。

我们可以在Spring6官网中看到官方的声明:

commonsmultipartresolver spring6消失,spring,intellij-idea

大致意思就是:

CommonsMultipartResolver从 Spring Framework 6.0 及其新的 Servlet 5.0+ 基线开始,基于 Apache Commons FileUpload 的过时版本不再可用。

在网上查找后发现出现这个问题的人并不多,只好自己摸索了一下,去bingGPT和ChatGPT搜索了一下,一番操作发现上传成功了。

先给出我的环境:

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>6.0.11</version>
        </dependency>

        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>6.0.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring6</artifactId>
            <version>3.1.1.RELEASE</version>
        </dependency>

使用的Spring6的环境。

下面给出我的解决方法: 

首先在你的web.xml文件配置前端处理器-DispatcherServlet的标签中:

        <servlet>
            <servlet-name>DispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:SpringMVC.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>

加上下面的配置:

           <multipart-config>
                <!--         上传文件最大为多少   -->
                <max-file-size>10485760</max-file-size>
                <!--         最大的请求大小   -->
                <max-request-size>10485760</max-request-size>
                <!--         多大以上的文件可以上传   -->
                <file-size-threshold>0</file-size-threshold>
            </multipart-config>

 

接着在Spring的配置文件中,把 

org.springframework.web.multipart.commons.CommonsMultipartyResolver

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartyResolver"/>

替换成
org.springframework.web.multipart.support.StandardServletMultipartResolver

 <bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"/>

 同时要注意,这个bean的id一定要是multipartResolver,千万不要写错。

最后在你的Controller类的方法中,MultipartFile类型的形参前面加上@RequestParam注解,注意别忘了它的value属性

 @RequestMapping("/testUpload")
    public String testUpload(@RequestParam("picture") MultipartFile picture,
HttpSession session) throws IOException {
        ServletContext servletContext = session.getServletContext();
        if (picture.isEmpty()) {
            return "上传失败,请选择文件";
        }
        String picturePath = servletContext.getRealPath("picture");
        String fileName = picture.getOriginalFilename();
        File dest = new File(picturePath);
        if (!dest.exists()) {
            dest.mkdirs();
        }
        String finalPath = picturePath + File.separator + fileName;
        System.out.println(finalPath);
        picture.transferTo(new File(finalPath));
        return "success";
    }

加入注解后,获取到上传文件的真实路径和文件名,拼接后传给transferTo方法即可。

在页面中点击上传:

commonsmultipartresolver spring6消失,spring,intellij-idea

 服务器提示成功:

commonsmultipartresolver spring6消失,spring,intellij-idea

至此结束。

只是分享了我的解决方法,希望能帮到一些碰到同样问题的人。文章来源地址https://www.toymoban.com/news/detail-794617.html

到了这里,关于Spring6中删除了CommonsMultipartResolver类后,使用springmvc如何上传文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring6-01

    什么是开闭原则? 在软件开发过程中应当对扩展开放,对修改关闭。 也就是说如果在进行功能扩展的时候,添加额外的类是没有问题的,但因为功能扩展而修改之前运行正常的程序,这是不被允许的。因为一旦修改了之前运行正常的程序,就会导致项目整体要进行整体的全

    2024年02月08日
    浏览(72)
  • spring6详细讲解

    1.1、Spring是什么? Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spr

    2024年02月10日
    浏览(65)
  • spring6概述

    1.1、Spring是什么? Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spr

    2024年02月08日
    浏览(31)
  • spring6-事务

    1、JdbcTemplate 1.1、简介 Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作 1.2、准备工作 ①搭建子模块 搭建子模块:spring-jdbc-tx ②加入依赖 ③创建jdbc.properties ④配置Spring的配置文件 beans.xml ⑤准备数据库与测试表 1.3、实现CURD ①装配 JdbcTemplate 创建测试类,整

    2024年02月08日
    浏览(26)
  • 2、Spring6 入门

    JDK:Java17+ (Spring6要求JDK最低版本是Java17) Maven:3.6+ Spring:6.0.2 点击“Create”     点击 Create 完成.   查看依赖:   在resources目录创建一个 Spring 配置文件 bean.xml(配置文件名称可随意命名,如:springs.xml)  以前我们创建对象的方式是通过 的方式,但是现在我们可以把创建

    2024年02月10日
    浏览(22)
  • Spring6 初始

    @ 目录 Spring6 初始 每博一文案: 1. 初始 Spring6 1.1 OCP开闭原则 1.2 依赖倒置原则DIP 1.3 控制反转IoC 2. Spring 初始 2.1 Spring特点 2.2 Spring6 的下载: 2.3 Spring的jar文件 3. 第一个Spring 程序的编写 4. 第一个Spring程序详细剖析 4.1 bean标签的id属性可以重复吗? 4.2 底层是怎么创建对象的,是

    2024年02月17日
    浏览(30)
  • 【Spring6】| 简述Spring中的八大模式

    Spring中的八大模式,有很多我们前面已经讲过了,这里只需要大概有个印象,后期会出一个专门对23种设计模式的详解! 1. 简单工厂模式 BeanFactory的getBean()方法,通过唯一标识来获取Bean对象。是典型的简单工厂模式(静态工厂模式);主要包括三部分:抽象产品角色、具体

    2023年04月21日
    浏览(35)
  • 【Spring6】| Spring IoC注解式开发

    目录 一:Spring IoC注解式开发 1. 回顾注解 2. 声明Bean的四个注解 3. Spring注解的使用 4. 选择性实例化Bean 5. 负责注入的注解(重点) 5.1 @Value 5.2 @Autowired与@Qualifier 5.3 @Resource 6. 全注解式开发 注解的存在主要是为了简化XML的配置 ,Spring6倡导全注解开发。 我们来回顾一下:

    2023年04月12日
    浏览(35)
  • Spring6.0 源码部署

    Git JDK17 Gradle(版本号需要和Spring源码中的版本一致) 官网地址

    2024年02月16日
    浏览(38)
  • Spring6源码编译、安装

    名称 版本 jdk 17 gradle 8.1.1 spring源码版本 6.0.9 下载并解压 配置环境变量 验证 下载并解压 配置环境变量 验证 配置镜像仓库 spring在Github官网上有详细的说明文档,可以参考,但按照步骤做辉有些报错😅,还是按照自己总结的步骤来吧。 github源码地址 国内gitcode镜像 官方构建

    2024年02月08日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包