Struts2实现多文件上传功能

第一步:引入依赖
在项目的 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.5.26</version>
</dependency>

第二步:前端页面
首先我们需要在前端页面中添加一个 file 类型的 input 元素,如下所示:

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

注意,这里的 enctype 属性需要设置为 multipart/form-data。

第三步:Action 类
接下来我们需要编写一个 Action 类来处理上传操作。首先定义一个成员变量来保存上传的文件列表:

private List<File> file;
private List<String> fileFileName;
private List<String> fileContentType;

然后在该类中添加一个名为 upload 的方法:

public String upload() {
    for (int i = 0; i < file.size(); i++) {
        File f = file.get(i);
        String fileName = fileFileName.get(i);
        String filePath = "/temp/" + fileName;
        FileUtil.saveFile(f, filePath);
    }
    return SUCCESS;
}

在上述代码中,我们遍历了上传的文件列表,通过 FileUtil 工具类将文件保存到指定位置。其中 FileUtil.saveFile 方法的实现如下所示:

public static void saveFile(File file, String filePath) throws IOException {
    FileOutputStream fos = new FileOutputStream(filePath);
    FileInputStream fis = new FileInputStream(file);
    byte[] buffer = new byte[1024];
    int len = 0;
    while ((len = fis.read(buffer)) > 0) {
        fos.write(buffer, 0, len);
    }
    fis.close();
    fos.close();
}

第四步:配置文件
最后一步是配置 Struts2,我们需要在 struts.xml 文件中添加一个 action。具体如下所示:

<action name="upload" class="com.example.UploadAction" method="upload">
    <interceptor-ref name="fileUpload"/>
    <result name="success">/success.jsp</result>
</action>

在上述代码中,我们使用了 Struts2 提供的 fileUpload 拦截器来处理文件上传操作。同时,我们定义了一个名为 success 的结果,用于展示上传成功的界面。

示例一:文件上传并保存到本地
下面我们来看一个具体的示例,该示例将文件上传到服务器并保存到本地磁盘中。

(1) 添加 fileupload.jsp 文件:

<!DOCTYPE html>
<html>
<head>
    <title>Struts2文件上传-示例1</title>
</head>
<body>
    <form action="upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file">
        <input type="submit" value="上传">
    </form>
</body>
</html>

(2) 添加 UploadAction 类:

public class UploadAction extends ActionSupport {

    private File file;
    private String fileFileName;
    private String fileContentType;

    public String execute() throws Exception {
        String filePath = "D:/temp/" + fileFileName;
        FileUtil.saveFile(file, filePath);
        return SUCCESS;
    }

    // getters and setters omitted
}

(3) 添加 struts.xml 配置文件:

<action name="upload" class="com.example.UploadAction" method="execute">
    <interceptor-ref name="fileUpload"/>
    <result name="success">/success.jsp</result>
</action>

示例二:多文件上传并保存到服务器
下面我们再来看一个多文件上传的示例,该示例将上传的文件保存到服务器上。

(1) 添加 multifileupload.jsp 文件:

<!DOCTYPE html>
<html>
<head>
    <title>Struts2文件上传-示例2</title>
</head>
<body>
    <form action="upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file" multiple>
        <input type="submit" value="上传">
    </form>
</body>
</html>

(2) 添加 UploadAction 类:

public class UploadAction extends ActionSupport {

    private List<File> file;
    private List<String> fileFileName;
    private List<String> fileContentType;

    public String execute() throws Exception {
        for (int i = 0; i < file.size(); i++) {
            File f = file.get(i);
            String fileName = fileFileName.get(i);
            String filePath = "D:/temp/" + fileName;
            FileUtil.saveFile(f, filePath);
        }
        return SUCCESS;
    }

    // getters and setters omitted
}

(3) 添加 struts.xml 配置文件:

<action name="upload" class="com.example.UploadAction" method="execute">
    <interceptor-ref name="fileUpload"/>
    <result name="success">/success.jsp</result>
</action>

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

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • IDEA基于支付宝小程序搭建springboot项目的详细步骤

    下面是“IDEA基于支付宝小程序搭建springboot项目的详细步骤”的完整攻略。 步骤一:下载安装开发环境 首先需要下载并安装以下开发工具: IDEA:用于Java项目开发的集成开发环境。 JDK:Java开发工具包,用于编译和运行Java代码。 支付宝小程序开发工具:用于开发和调试小程序的工具。 步骤二:创建Spring Boot项目 在IDEA中创建…

    Java 2023年5月19日
    00
  • 一文带你掌握Spring Security框架的使用

    一文带你掌握Spring Security框架的使用 Spring Security是基于Spring框架的应用安全解决方案。它提供了一系列的安全服务,如身份认证、授权、攻击防护等等。本文将介绍Spring Security的使用方法,帮助读者快速上手。 1. 引入Spring Security 在Maven工程中,在pom.xml文件中添加以下依赖: &l…

    Java 2023年5月19日
    00
  • 基于Maven的pom.xml文件详解

    基于Maven的pom.xml文件是Maven项目的核心配置文件,用于定义项目的各种依赖、属性、插件等信息。下面将对pom.xml文件的各个部分进行详细讲解,并配以示例进行说明。 1. 项目信息 项目信息是pom.xml文件的第一个配置部分,用于定义项目的名称、版本号、描述等基本信息。格式如下: <project> <groupId>…

    Java 2023年5月20日
    00
  • SpringBoot中整合MyBatis-Plus的方法示例

    Sure,下面是SpringBoot整合MyBatis-Plus的方法示例完整攻略: 一、前置准备 JDK 1.8+ Maven 3.0+ SpringBoot 2.0+ MyBatis-Plus 3.1.0+ 二、项目搭建 1. 创建SpringBoot项目 通过 Spring Initializer,创建一个 SpringBoot 项目,并导入 Mave…

    Java 2023年5月20日
    00
  • 什么是标记-复制算法?

    以下是关于标记-复制算法的详细讲解: 什么是标记-复制算法? 标记-复制算法是一种常见的垃圾回收算法。它的原理是将内存空间分为两个区域,一部分为活动区,一部分为闲置区。在程序运行程中,标记所有不再使用的内存空间,然后将所有活动区的对象复制到闲置区,最后清空动区,从而回收内存空间。标记-复制算法分两个阶段:标记阶段和复制阶段。 标记阶段 在标记阶段,垃圾回收器…

    Java 2023年5月12日
    00
  • angular实现input输入监听的示例

    下面我将向你详细讲解如何使用Angular实现input输入监听的示例。 1. 为input添加ngModel指令 首先,我们需要在HTML页面中给input元素添加ngModel指令,利用双向绑定机制将输入的内容与组件中的属性相绑定,从而实现输入监听。 示例代码如下: <input type="text" [(ngModel)]=…

    Java 2023年6月15日
    00
  • 解决json字符串序列化后的顺序问题

    关于“解决json字符串序列化后的顺序问题”的问题,我们可以通过以下方法来解决: 方法一:使用有序字典(OrderedDict)进行序列化 在Python的json库中,有序字典(OrderedDict)可以帮助我们保持json字符串序列化后的顺序。在使用json.dumps()方法进行序列化时,我们可以传入参数sort_keys=False,并在json.…

    Java 2023年5月26日
    00
  • 使用jdk7的nio2操作文件拷贝和剪切示例

    我来给您讲解 “使用jdk7的nio2操作文件拷贝和剪切示例” 的完整攻略,具体包含了以下内容: 1. NIO2简介 Java NIO(New I/O)是一个在JDK 1.4中引入的新的IO API,位于java.nio包和java.nio.channels包中,这些新API提供了一系列支持快速IO操作的类和接口,可用于代替标准的Java IO API。 使…

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