spring6 文件上传

Spring 6 的主要变化

  1. Jakarta EE 9+ 支持:

    • Spring 6完全迁移到了Jakarta EE 9+,这意味着所有的包名都从javax前缀改为了jakarta前缀。例如,javax.servlet 变为 jakarta.servlet
    • 因此,如果你在Spring 6中使用文件上传,必须确保依赖库和配置都使用了新的Jakarta命名空间。
  2. Java 17+ 支持:

    • Spring 6要求至少Java 17作为运行环境。这带来了对Java语言特性的更好支持和优化。

教程如下:

这里给大家粘贴一段spring文档的原文:

MultipartResolver from the package is a strategy for parsing multipart requests including file uploads. There is a container-based implementation for Servlet multipart request parsing. Note that the outdated based on Apache Commons FileUpload is not available anymore, as of Spring Framework 6.0 with its new Servlet 5.0+ baseline.org.springframework.web.multipartStandardServletMultipartResolverCommonsMultipartResolver

Multipart Resolver :: Spring 框架

简单来说就是Spring 6.0已经不再使用基于Apache Commons FileUpload的CommonsMultipartResolver,而是推荐使用基于Servlet标准的StandardServletMultipartResolver

MultipartResolver 概述

MultipartResolver是一个接口,定义了解析multipart请求(包括文件上传)的策略。Spring提供了多种实现,包括基于Servlet容器的实现和过去常用的基于Apache Commons FileUpload的实现。

主要实现

  1. StandardServletMultipartResolver
  2. CommonsMultipartResolver (过时的实现,不再推荐)

1. StandardServletMultipartResolver

这是基于Servlet 3.0+规范的实现,利用Servlet容器本身的multipart解析功能。它不依赖于外部库,而是直接使用Servlet API提供的multipart支持。

配置示例: 在Spring 6中,你应该使用StandardServletMultipartResolver,这也是推荐的方式。

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

web.xml中配置<multipart-config>

这种方式适用于使用XML配置的传统Spring MVC项目。

1. 在web.xml中添加<multipart-config>

编辑你的web.xml文件,找到你定义的DispatcherServlet,然后添加<multipart-config>元素。

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/dispatcher-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <multipart-config>
            <!-- Max file size: 5MB -->
            <max-file-size>5242880</max-file-size>
            <!-- Max request size: 5MB -->
            <max-request-size>5242880</max-request-size>
            <!-- File size threshold after which files will be written to disk: 0 -->
            <file-size-threshold>0</file-size-threshold>
        </multipart-config>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

2. CommonsMultipartResolver

这是基于Apache Commons FileUpload库的实现,曾经是处理文件上传的主要方式。但是在Spring 6.0中,这个实现已经被废弃,因为它依赖的Apache Commons FileUpload库已经过时,不再推荐使用。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="5242880"/> <!-- 5MB -->
</bean>

在Spring 6中,使用基于Servlet标准的MultipartResolver确保了更好的兼容性和性能,同时减少了对外部库的依赖。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值