处理SpringMVC中的文件上传过程

 更新时间:2026年05月16日 10:46:48   作者:埃泽漫笔  
配置SpringMVC支持文件上传,在在配置文件中添加支持;创建包含文件上传字段的表单;在控制器中编写处理文件上传请求的方法,使用@RequestParam注解将上传的文件绑定到方法参数

配置 Spring MVC 以支持文件上传

首先,需要在 Spring 配置文件中添加对文件上传的支持。

你可以在 Spring 的 Java 配置类或 XML 配置文件中进行配置。

Java 配置类方式

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
@Configuration
public class AppConfig {
    @Bean
    public CommonsMultipartResolver multipartResolver() {
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setMaxUploadSize(50000000); // 设置最大上传文件大小为 50MB
        return multipartResolver;
    }
}

XML 配置文件方式

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="50000000"/> <!-- 设置最大上传文件大小为 50MB -->
    </bean>
</beans>

创建一个表单用于文件上传

创建一个包含文件上传字段的 HTML 表单。

注意,表单的 enctype 属性必须设置为 multipart/form-data

<!DOCTYPE html>
<html>
<head>
    <title>File Upload</title>
</head>
<body>
    <form method="post" action="/upload" enctype="multipart/form-data">
        <input type="file" name="file" />
        <input type="submit" value="Upload" />
    </form>
</body>
</html>

编写控制器方法来处理文件上传请求

在控制器中编写处理文件上传请求的方法。

使用 @RequestParam 注解将上传的文件绑定到方法参数上。

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.bind.annotation.ResponseBody;
import java.io.File;
import java.io.IOException;
@Controller
public class FileUploadController {
    @PostMapping("/upload")
    @ResponseBody
    public String handleFileUpload(@RequestParam("file") MultipartFile file) {
        if (!file.isEmpty()) {
            try {
                // 获取文件名
                String fileName = file.getOriginalFilename();
                // 将文件保存到指定路径
                String filePath = "C:/uploads/" + fileName;
                File dest = new File(filePath);
                file.transferTo(dest);
                return "File uploaded successfully: " + fileName;
            } catch (IOException e) {
                e.printStackTrace();
                return "Failed to upload file: " + e.getMessage();
            }
        } else {
            return "Failed to upload file: File is empty.";
        }
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JVM运行时数据区原理解析

    JVM运行时数据区原理解析

    这篇文章主要介绍了JVM运行时数据区原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Spring配置文件解析之BeanDefinitionDocumentReader详解

    Spring配置文件解析之BeanDefinitionDocumentReader详解

    这篇文章主要介绍了Spring配置文件解析之BeanDefinitionDocumentReader详解,Spring的xml配置文件解析成Document对象,接下来的解析处理工作是在BeanDefinitionDocumentReader中对Document对象进行解析,需要的朋友可以参考下
    2024-02-02
  • Java中ArrayList与顺序表的定义与实现方法

    Java中ArrayList与顺序表的定义与实现方法

    ArrayList是一个实现List接口的类,底层是动态类型顺序表,本质也就是数组,动态主要体现在它的扩容机制,下面这篇文章主要给大家介绍了关于Java中ArrayList与顺序表的定义与实现的相关资料,需要的朋友可以参考下
    2022-07-07
  • SpringBoot整合mysql、postgres及sqlserver实现多数据源配置实战案例

    SpringBoot整合mysql、postgres及sqlserver实现多数据源配置实战案例

    在工作中业务的发展或业务数据隔离的场景下,通常需要一个项目中引入多个数据源,但SpringBoot默认的自动化配置是单数据源的,这篇文章主要给大家介绍了关于SpringBoot整合mysql、postgres及sqlserver实现多数据源配置的相关资料,需要的朋友可以参考下
    2023-12-12
  • 基于UDP协议实现聊天系统

    基于UDP协议实现聊天系统

    这篇文章主要为大家详细介绍了基于UDP协议实现聊天系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • Spring Boot 拦截器实战指南之登录验证、日志记录、权限控制

    Spring Boot 拦截器实战指南之登录验证、日志记录、权限控制

    本文详细介绍了SpringBoot拦截器的使用方法,通过多个实战案例,展示了拦截器在登录鉴权、请求日志记录、接口权限控制和防止重复提交等方面的应用,帮助开发者更好地理解和掌握SpringBoot拦截器的使用技巧,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • java使用dom4j操作xml示例代码

    java使用dom4j操作xml示例代码

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件,下面我来个小例子学习他的使用方法
    2013-11-11
  • 求1000阶乘的结果末尾有多少个0

    求1000阶乘的结果末尾有多少个0

    题目是:求1000!的结果末尾有多少个0,解题思路:两个素数2、5,相乘即可得到10,我们可以认为,有多少组2、5,结尾就有多少个0,下面是代码,需要的朋友可以参考下
    2014-02-02
  • 解析Java中的默认方法

    解析Java中的默认方法

    这篇文章主要介绍了Java中的默认方法,包括继承和调用等Java入门学习中的基础知识,需要的朋友可以参考下
    2015-07-07
  • 详解Java图形化编程中的鼠标事件设计

    详解Java图形化编程中的鼠标事件设计

    这篇文章主要介绍了Java图形化编程中的鼠标事件设计,是Java的GUI开发中的基础部分,需要的朋友可以参考下
    2015-10-10

最新评论