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日

相关文章

  • 10个经典的Java main方法面试题

    1.题目分析 这是一篇关于10个经典的Java main方法面试题的攻略,主要包括以下内容: Java main方法的特点; 10个常见的Java main方法面试题; 每道题目的详细分析和解答; 示例说明。 2.Java main方法的特点 Java main方法是一个程序的入口点,是程序运行的起点。它的定义格式如下: public static void…

    Java 2023年5月19日
    00
  • SpringBoot整合Mybatis-plus案例及用法实例

    SpringBoot是一个非常流行的Java开发框架,而Mybatis-Plus则是Mybatis框架的一个插件,提供了更加便捷的CRUD操作以及更优雅的SQL语句写法。下面就为大家详细讲解如何整合SpringBoot和Mybatis-Plus,并提供两个简单的用法示例。 1. 初始化SpringBoot项目 首先我们需要初始化一个SpringBoot项目,…

    Java 2023年5月20日
    00
  • 接口签名怎么用Java实现

    接口签名是一种验证接口调用合法性的方式,在API开发中经常被使用。接口签名的实现过程需要借助对参数进行加密的算法,而具体的加密算法需要根据接口签名的实现规则来确定。下面我们就来详细讲解如何用Java实现接口签名的过程。 1. 接口签名实现规则 在使用Java实现接口签名之前,必须要明确如下接口签名实现规则。 1.1 参数加密 接口签名需要对参与签名的参数进行…

    Java 2023年5月26日
    00
  • 详解Java Streams 中的异常处理

    详解Java Streams 中的异常处理 在 Java 8 中引入了 java.util.stream.Stream 对象,它为我们提供了一种基于lambda表达式的函数式编程方式,方便我们对集合、数组等数据进行快速处理。但是在使用 Stream 进行数据处理的过程中,我们也需要考虑一些异常问题,本文将详细讲解 Java Streams 中的异常处理方案。…

    Java 2023年5月27日
    00
  • Java中SpringSecurity密码错误5次锁定用户的实现方法

    Java中Spring Security提供了实现对用户密码错误次数的限制的功能,可以有效地防范暴力破解密码的攻击。下面是实现方法的完整攻略: 1. 添加依赖 为使用Spring Security功能,我们首先需要在工程中添加相关依赖。可以通过Maven或Gradle等工具自动下载所需的库文件并将其添加至工程中。添加依赖库后,我们可以开始配置Security…

    Java 2023年5月20日
    00
  • 非常全面的Java SpringBoot点赞功能实现

    Java SpringBoot点赞功能实现攻略 一、前置知识 在进行本文中介绍的Java SpringBoot点赞功能实现之前,我们需要掌握以下技能: 熟练掌握Java编程语言。 掌握Java SpringBoot框架的基本使用方法。 熟练使用MySQL数据库。 了解前端开发技术,如HTML、CSS、JavaScript等。 二、功能实现步骤 以下是在Jav…

    Java 2023年5月31日
    00
  • jdbc中自带MySQL 连接池实践示例

    下面是 “jdbc中自带MySQL 连接池实践示例” 的详细攻略: 准备工作 下载并安装 MySQL 数据库,创建一个名为 test 的数据库并创建一个名为 user 的表,包含 id、name、age 三个字段。 下载并安装 JDK,确认环境变量配置正确。 示例一:使用 DriverManager 方式连接数据库 导入 JDBC 驱动 // 导入MySQL…

    Java 2023年6月16日
    00
  • Mabatis错误提示Parameter index out of range的处理方法

    MyBatis错误提示Parameter index out of range的处理方法 MyBatis是一个流行的ORM框架,但在使用过程中,我们有时会遇到“Parameter index out of range”的异常错误,这篇文章将详细讲解出现此类错误的原因和应对方法。 问题背景 在MyBatis中,我们可以使用#{}或者${}占位符来动态设置SQL…

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