SpringMVC 单文件上传与多文件上传实例

yizhihongxing

下面就给您详细讲解“SpringMVC 单文件上传与多文件上传实例”的完整攻略。

一、SpringMVC 单文件上传实例

1.1 相关依赖说明

在 pom.xml 文件中增加以下依赖:

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-io</artifactId>
    <version>1.3.2</version>
</dependency>

1.2 前端表单处理

前端页面需要增加一个文件上传 input,用于上传文件,示例如下:

<form method="post" action="/upload" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit" value="上传" />
</form>

1.3 后端控制器处理

后端控制器中需要增加处理上传文件的方法,示例如下:

@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public String upload(HttpServletRequest request) throws Exception {
    // 上传文件的存储路径
    String uploadPath = request.getServletContext().getRealPath("/") + "upload";

    // 创建上传文件的存储路径
    File uploadDir = new File(uploadPath);
    if (!uploadDir.exists()) {
        uploadDir.mkdirs();
    }

    // 创建文件上传对象
    DiskFileItemFactory factory = new DiskFileItemFactory();
    factory.setSizeThreshold(4096);
    factory.setRepository(uploadDir);
    ServletFileUpload upload = new ServletFileUpload(factory);

    // 获取上传的文件列表
    List<FileItem> items = upload.parseRequest(request);
    for (FileItem item : items) {
        // 判断是否为上传文件类型
        if (!item.isFormField()) {
            String fileName = item.getName();
            String filePath = uploadPath + File.separator + fileName;
            File file = new File(filePath);
            item.write(file);
        }
    }

    return "文件上传成功!";
}

以上后端处理逻辑主要是通过调用 ServletFileUpload 实现了上传文件的处理,其各个参数含义可以参考 maven 依赖包中所带源码中的注释。

二、SpringMVC 多文件上传实例

2.1 相关依赖说明

在 pom.xml 文件中增加以下依赖:

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-io</artifactId>
    <version>1.3.2</version>
</dependency>

2.2 前端表单处理

前端页面需要增加多个文件上传 input,用于上传多个文件,示例如下:

<form method="post" action="/uploadMulti" enctype="multipart/form-data">
    <input type="file" name="file1" />
    <input type="file" name="file2" />
    <input type="file" name="file3" />
    <input type="submit" value="上传" />
</form>

2.3 后端控制器处理

后端控制器中需要增加处理上传多个文件的方法,示例如下:

@RequestMapping(value = "/uploadMulti", method = RequestMethod.POST)
@ResponseBody
public String uploadMulti(HttpServletRequest request) throws Exception {
    // 上传文件的存储路径
    String uploadPath = request.getServletContext().getRealPath("/") + "upload";

    // 创建上传文件的存储路径
    File uploadDir = new File(uploadPath);
    if (!uploadDir.exists()) {
        uploadDir.mkdirs();
    }

    // 创建文件上传对象
    DiskFileItemFactory factory = new DiskFileItemFactory();
    factory.setSizeThreshold(4096);
    factory.setRepository(uploadDir);
    ServletFileUpload upload = new ServletFileUpload(factory);

    // 获取上传的文件列表
    List<FileItem> items = upload.parseRequest(request);
    for (FileItem item : items) {
        // 判断是否为上传文件类型
        if (!item.isFormField()) {
            String fileName = item.getName();
            String filePath = uploadPath + File.separator + fileName;
            File file = new File(filePath);
            item.write(file);
        }
    }

    return "文件上传成功!";
}

以上后端处理逻辑和单文件上传类似,只是在获取上传的文件列表时可以处理多个上传文件,如果希望获取到具体的上传文件名称,可以通过 FileItem 对象的 getFieldName() 方法获取到 input 控件的 name 属性值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC 单文件上传与多文件上传实例 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • vue 实现axios拦截、页面跳转和token 验证

    下面我将详细讲解“Vue 实现 Axios 拦截、页面跳转和 Token 验证”的完整攻略。 简介 在 Vue 中,我们常常使用 Axios 发起网络请求。而为了保证数据的安全性和用户的登录状态,我们需要进行拦截、跳转和 Token 验证。下面是具体的实现步骤。 实现步骤 1. 安装依赖 首先,需要在项目中安装两个依赖:axios 和 vue-router。…

    Java 2023年6月16日
    00
  • Java判断字符串是否是整数或者浮点数的方法

    Java判断字符串是否是整数或浮点数有多种方法可以实现。以下是几种常见的方法。 方法一:正则表达式 正则表达式可以匹配复杂的字符模式。下列正则表达式可以匹配整数和浮点数: ^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$ 然后将它和待匹配字符串进行比较: public static boolean isNumeric(Stri…

    Java 2023年5月27日
    00
  • Java中的ThreadLocal功能演示示例

    下面是“Java中的ThreadLocal功能演示示例”的完整攻略。 简介 在 Java 中,ThreadLocal 是一个特殊的工具,它可以为每个线程提供一个独立的副本以保存该变量。这个副本只有对应线程可以访问和修改,其他线程不可访问。这个功能的实现依赖于 ThreadLocalMap 类和 Thread 类的成员变量 ThreadLocal.Thread…

    Java 2023年5月26日
    00
  • Java GUI实现学生成绩管理系统

    作为Java GUI实现学生成绩管理系统的作者,以下是详细的攻略: 1. 学习Java GUI 首先需要熟悉Java GUI相关的知识,包括Swing和AWT等基础知识。可以通过在线课程、教程和书籍等途径来学习。 2. 设计学生成绩管理系统 在学习了Java GUI基础知识之后,开始设计学生成绩管理系统。首先需要确定系统的功能和界面设计,包括成绩录入、成绩查…

    Java 2023年5月24日
    00
  • Spring为singleton bean注入prototype bean

    在Spring中,我们可以使用依赖注入(DI)来管理bean之间的依赖关系。默认情况下,Spring会将所有bean都创建为singleton bean,即每个bean只会创建一次并在整个应用程序中共享。但是,有时我们需要将一个singleton bean注入到一个prototype bean中。在本文中,我们将详细讲解如何在Spring中实现这一目标。 方…

    Java 2023年5月18日
    00
  • Java实现迷你图书管理系统案例全程

    Java实现迷你图书管理系统案例全程 系统介绍 本系统是一个基于Java编程语言的迷你图书管理系统,主要功能包括:图书信息录入,图书信息修改,图书信息查询和借阅归还管理等。本系统提供了简单易用的界面,让用户可以方便快捷地管理图书信息和借阅记录。 实现步骤 步骤1:搭建开发环境 在开始编程之前,首先需要搭建开发环境。本系统使用Java编程语言,因此需要在本地安…

    Java 2023年5月24日
    00
  • 拳皇(Java简单的小程序)代码实例

    拳皇(Java简单的小程序)是一个基于Java Swing的小游戏应用程序,主要通过键盘控制实现不同的角色之间的战斗和移动。下面是该小程序实现的完整攻略,包含基本的代码结构、功能实现和示例说明。 代码结构 拳皇小程序的代码结构主要包括以下几个部分: Main.java:程序入口,包含主函数和窗口初始化等功能。 GamePanel.java:游戏主面板,包含游…

    Java 2023年5月23日
    00
  • 通过大白话理解微信小程序的授权登录

    下面详细讲解一下“通过大白话理解微信小程序的授权登录”的完整攻略。 什么是微信小程序的授权登录? 微信小程序的授权登录是指通过用户点击同意按钮,将微信用户的个人信息授权给小程序,从而实现小程序与微信用户的关联。通常在小程序的中会出现授权登录的弹窗,询问用户是否授权登录,如果用户同意,小程序就能够获取到用户的微信个人信息。 微信小程序的授权登录步骤 微信小程序…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部