Struts2+uploadify多文件上传实例

Struts2+Uploadify多文件上传完整攻略

1. 前言

本文介绍如何在Struts2框架中使用uploadify插件实现多文件上传功能。假设你已经对Struts2框架有基本的了解,并且熟悉Maven构建工具。

2. 准备工作

在开始实现多文件上传之前,需要准备以下工具和环境:

  • 开发IDE:推荐使用IntelliJ IDEA或Eclipse
  • Maven:用于管理和构建项目
  • Struts2框架:包含Struts2、Struts2-spring-plugin和Struts2-json-plugin
  • Uploadify插件:用于实现多文件上传
  • Tomcat:运行和调试项目的服务器

3. 实现过程

3.1 引入依赖

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

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.5.22</version>
</dependency>

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-spring-plugin</artifactId>
    <version>2.5.22</version>
</dependency>

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-json-plugin</artifactId>
    <version>2.5.22</version>
</dependency>

<dependency>
    <groupId>com.oreilly.servlet</groupId>
    <artifactId>cos</artifactId>
    <version>20021113</version>
</dependency>

3.2 创建Action类

在src/main/java下创建一个Action类,例如:

public class FileUploadAction extends ActionSupport {
    private File[] file;
    private String[] fileFileName;

    // get/set方法略
}

3.3 创建页面

在WebContent目录下创建一个JSP页面,例如file_upload.jsp,代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<title>文件上传</title>
<script type="text/javascript">
$(document).ready(function() {
    $("#file").uploadify({
        'swf' : 'uploadify.swf',
        'uploader' : 'file_upload.action',
        'fileSizeLimit' : '10MB',
        'multi' : true,
        'buttonText' : '选择文件',
        'removeCompleted' : false
    });
});
</script>
</head>
<body>
    <input type="file" id="file" name="file"/>
</body>
</html>

3.4 配置Struts2

在struts.xml文件中添加如下配置:

<package name="default" namespace="/" extends="struts-default,json-default">
    <action name="file_upload" class="com.example.action.FileUploadAction" method="execute">
        <result type="json"/>
    </action>
</package>

3.5 实现Action类

在FileUploadAction类中实现execute方法如下:

public String execute() {
    if (file != null && file.length > 0) {
        for (int i = 0; i < file.length; i++) {
            // 上传文件
        }
    }
    return SUCCESS;
}

3.6 上传文件方法实现

通过cos.jar包实现上传文件的方法如下:

private void uploadFile(File file, String fileName) throws IOException {
    FileInputStream fileInputStream = null;
    try {
        fileInputStream = new FileInputStream(file);
        FTPClient ftpClient = new FTPClient();
        ftpClient.connect(ftpServer, port);
        ftpClient.login(username, password);
        if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
            ftpClient.disconnect();
            throw new IOException("FTP Server refused connection.");
        }
        ftpClient.changeWorkingDirectory(ftpDirectory);
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        ftpClient.enterLocalPassiveMode();
        ftpClient.storeFile(fileName, fileInputStream);
    } finally {
        fileInputStream.close();
    }
}

4. 示例

4.1 示例一

使用uploadify插件上传单个文件到指定目录中。

4.2 示例二

使用uploadify插件上传多个文件到指定目录中。

5. 结语

以上就是使用Struts2和uploadify插件实现多文件上传的完整攻略,希望对大家有所帮助。

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

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

相关文章

  • Java SpringBoot模板引擎之 Thymeleaf入门详解

    Java SpringBoot模板引擎之 Thymeleaf入门详解 Thymeleaf简介 Thymeleaf是一个服务端的Java模板引擎,它能够将网页模板和Java代码结合起来,从而动态地生成HTML页面,使网页开发更加灵活和易于维护。 Thymeleaf的主要特点是: 完全支持HTML5。 可以处理SVG和其他任意XML文件。 支持Spring框架,…

    Java 2023年5月19日
    00
  • SpringBoot中 Jackson 日期的时区和日期格式问题解决

    下面是关于“SpringBoot中 Jackson 日期的时区和日期格式问题解决”的完整攻略。 问题描述 在SpringBoot的开发中,我们经常需要将Java对象转换为JSON格式的数据,而这种转换一般都是使用Jackson框架完成的。但是在转换日期类型的时候,会出现时区和日期格式的问题,比如: 默认情况下,Jackson框架将日期转换为UTC时区的ISO…

    Java 2023年5月20日
    00
  • 浅析java的foreach循环

    下面是针对“浅析Java的foreach循环”的完整攻略: 什么是foreach循环 foreach循环,也被称为增强型for循环,是Java语言中一种用于遍历数组和集合类的循环结构。通过foreach循环,我们可以简化数组和集合的遍历过程,不需要手动去控制下标或迭代器的使用。 foreach循环的语法 foreach循环的语法结构如下: for (元素类型…

    Java 2023年5月26日
    00
  • Spring启动过程源码分析及简介

    下面是对于“Spring启动过程源码分析及简介”的完整攻略。 1. 概述 Spring是一个流行的基于Java的开源框架,其设计目标是为了提供一个全面的基础设施,使得开发人员可以快速构建企业级应用。Spring启动过程源码分析及简介是一个非常重要的主题,它可以帮助我们更好的理解Spring框架,并在实际应用中更好地使用。 2. Spring启动过程源码分析 …

    Java 2023年5月31日
    00
  • 什么是虚拟化技术?

    以下是关于虚拟化技术的完整使用攻略: 什么是虚拟化技术? 虚拟化技术是一种将物理计算机资源(如处理器、内存、存储器等)抽象为个虚拟计算机的技术。它可以让多个虚拟计算机在同一物理计算机上运行,从而提高计算机资源的利用率和灵活性。 虚拟化技术的分类 虚拟化技术可以分为以下几种: 完全虚拟化:在完全虚拟化中,虚拟机可以运行不同的操作系统,且不需要对操作系统修改。它…

    Java 2023年5月12日
    00
  • Java实现Kafka生产者和消费者的示例

    下面我会分步骤详细讲解如何使用Java实现Kafka生产者和消费者的示例。在这个过程中,我将会使用两个实例来演示具体的实现过程。 准备工作 在开始之前,请确保你已经完成了以下准备工作: 安装了Kafka集群和ZooKeeper 具备Java编程基础 示例一:Kafka生产者 1. 引入Kafka依赖 首先,我们需要在项目中引入Kafka的依赖。可以使用Mav…

    Java 2023年5月20日
    00
  • Spring BPP中如何优雅的创建动态代理Bean详解

    为了讲解“Spring BPP中如何优雅的创建动态代理Bean”,我们首先需要了解BPP是什么。BPP(BeanPostProcessor)是Spring IoC容器提供的扩展机制,可以在Bean的实例化过程中,对Bean进行增强、修改和替换等操作。而动态代理则是Spring AOP中常用的技术,能够实现切面编程的目的。 在Spring中,我们可以使用BPP…

    Java 2023年5月20日
    00
  • springboot如何整合elasticsearch

    下面我将为你详细讲解springboot如何整合Elasticsearch的完整攻略。 环境准备 首先,我们需要安装好Elasticsearch和Java开发环境。具体安装方法可以参考Elasticsearch官方文档和Java官方文档。此外,我们还需要添加Elasticsearch依赖到我们的Spring Boot项目中。 <dependency&g…

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