AjaxFileUpload+Struts2实现多文件上传功能

下面就来详细讲解如何使用AjaxFileUpload和Struts2实现多文件上传功能。

环境说明

  • Struts2版本:2.5.20
  • AjaxFileUpload版本:1.1
  • JDK版本:1.8

准备工作

  1. 下载AjaxFileUpload插件,将其解压到项目中的WebRoot目录下的js文件夹中。

  2. 引入AjaxFileUpload插件:

```html

```

  1. 配置Struts2项目支持文件上传:

在struts.xml文件中添加以下代码段:

xml
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="104857600"/>
<property name="defaultEncoding" value="utf-8"/>
</bean>

实现文件上传功能

  1. 在页面中放置文件上传控件:

html
<input id="fileupload" type="file" name="uploadfile" multiple="true">

这里可能需要注意的是,multiple属性要设置为true,以支持多文件上传。

  1. 编写jQuery代码:

javascript
$(function(){
$("#fileupload").on("change",function(){
$.ajaxFileUpload({
url:'uploadFile.action',//上传的服务器地址
secureuri:false,//是否启用安全提交,默认为false
fileElementId:'fileupload',//要上传的文件控件ID
dataType: 'json',//服务器返回的数据类型
success: function (data, status){ //上传成功后的回调方法
//更新页面等操作
},
error: function (data, status, e){ //上传失败后的回调方法
//更新页面等操作
}
});
});
});

这段代码中,需要将url属性设置为文件上传处理的Action地址。

  1. 编写文件上传Action:

```java
public class FileUploadAction extends ActionSupport {
private List uploadfile;
private List uploadfileFileName;
private List uploadfileContentType;

   public String upload() throws Exception {
       if (uploadfile != null) {
           for (int i = 0; i < uploadfile.size(); i++) {
               File file = uploadfile.get(i);
               String fileName = uploadfileFileName.get(i);
               String fileType = uploadfileContentType.get(i);
               //执行文件上传操作
               //...
           }
       }
       return SUCCESS;
   }

   //getter和setter方法

}
```

在文件上传Action中,需要添加三个List类型的属性,分别用于存储上传的文件、文件名和文件类型。同时,在方法中还需要进行文件上传相关的操作,例如将文件保存到服务器等。

  1. 在struts.xml文件中配置Action:

xml
<action name="uploadFile" class="com.example.action.FileUploadAction" method="upload">
<interceptor-ref name="defaultStack"/>
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
</action>

至此,使用AjaxFileUpload和Struts2实现多文件上传功能的攻略已经完成。下面再分别给出两条具体的示例:

示例1

在控制层中,可以使用FileUtils.copyFile()方法将上传的文件直接保存到服务器:

public String upload() throws Exception {
    if (uploadfile != null) {
        for (int i = 0; i < uploadfile.size(); i++) {
            File file = uploadfile.get(i);
            String fileName = uploadfileFileName.get(i);
            String fileType = uploadfileContentType.get(i);
            String savePath = "D:\\upload\\" + fileName;
            FileUtils.copyFile(file, new File(savePath));
        }
    }
    return SUCCESS;
}

示例2

在视图层中,可以在上传成功后显示上传的文件:

$(function(){
     $("#fileupload").on("change",function(){
          $.ajaxFileUpload({
               url:'uploadFile.action',
               secureuri:false,
               fileElementId:'fileupload',
               dataType: 'json',
               success: function (data, status){
                     var files = data.files;
                     //显示上传的文件
                     for(var i=0;i<files.length;i++){
                         var file = files[i];
                         var fileName = file.fileName;
                         var fileType = file.fileType;
                         var src = file.src;
                         $("#filelist").append("<img src='"+src+"' >");
                     }
               },
               error: function (data, status, e){
                      //更新页面等操作
               }
          });
     });
});

在文件上传成功后,服务器返回的数据中会包含上传的文件信息。我们可以从返回的数据中取出文件信息,然后使用JavaScript在页面上显示出来。

至此,两条示例都已经介绍完毕。如果需要实现多图片上传的功能,也是可以参照以上方法的思路进行实现的。

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

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

相关文章

  • JSP入门教程(3)

    JSP入门教程(3)主要讲解了如何使用JSP标准标签库(JSTL)进行数据的展示和处理。具体来说,本教程包括以下几个部分: 1. 引入JSTL库 要使用JSTL库,首先需要在JSP页面中引入JSTL的标签库。代码如下: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/j…

    Java 2023年6月15日
    00
  • JSP学习之JavaBean用法分析

    JSP学习之JavaBean用法分析 什么是JavaBean JavaBean是指一种用Java语言编写的可重用组件,它是一个类,它具有以下特点: 必须有一个公共的无参构造函数(构造方法) 成员变量必须是私有的,并通过公共的getter/setter方法来访问 JavaBean通常用于表示数据模型,封装了应用程序中的数据,并通过getter/setter方法…

    Java 2023年6月15日
    00
  • java用两个例子充分阐述多态的可拓展性介绍

    给您介绍一下如何使用Java的多态来实现可拓展性。 什么是多态 在Java中,多态是指一个对象的实际类型可能是其父类、接口或抽象类,这种特性可以让相同类型的对象执行相同的方法,但可能会有不同的实现方式。因此,多态可以让代码更加灵活,也更容易维护。 多态的可拓展性介绍 多态在Java中实现可拓展性的方法是,当新增一个子类时,只需要重写跟父类相同的方法即可,然后…

    Java 2023年5月20日
    00
  • Java实现布隆过滤器的方法步骤

    Java实现布隆过滤器的步骤如下: 1. 导入第三方库Guava Guava是Google提供的一款Java工具库,其中包含了常用的集合、缓存、并发、字符串、I/O等工具类,也包含了布隆过滤器的实现。因此在构建Java布隆过滤器之前,需要先将Guava库导入到自己的项目中。可以通过Maven或Gradle等工具来导入,下面是Gradle的示例配置。 depe…

    Java 2023年5月26日
    00
  • 详解Springboot Oauth2 Server搭建Oauth2认证服务

    详解SpringBoot Oauth2 Server搭建Oauth2认证服务 1. 概述 OAuth,全称是“开放授权”,是一种用于授权的开放标准。在Web应用中,OAuth用于授权用户第三方应用访问资源的操作,比如在不需要输入用户名和密码的情况下授权第三方应用获取用户的个人信息。OAuth提供了一个安全的、开放的方式实现对用户的授权。 SpringBoot…

    Java 2023年5月20日
    00
  • Java FastJson使用教程

    Java FastJson使用教程 什么是FastJson? FastJson是阿里巴巴的开源JSON处理库,它能够将Java对象转换成JSON格式的数据,也可以将JSON格式的数据转换成Java对象。FastJson处理速度极快,是目前Java平台上最快的JSON处理器之一。 FastJson的安装和配置 最简单的方法是通过Maven来引入FastJson…

    Java 2023年5月26日
    00
  • java el简介及用法

    Java EL 简介及用法 Java Expression Language(Java EL)是用于在Java Web应用程序中计算表达式的语言。Java EL 可以在页面中引用或调用Java Bean中的属性、方法等,并能在JSP、JSF、Struts、Spring等框架中使用。 语法 Java EL 对象名称可以分为两部分:对象名称和对象属性。对象名称是…

    Java 2023年6月15日
    00
  • java高效实现大文件拷贝功能

    首先,针对java高效实现大文件拷贝功能,可以采用NIO(Non-blocking IO,非阻塞IO)的方式进行操作。 步骤一:使用Java NIO中的通道(Channel)创建文件输入输出流 在Java NIO中,Channel是用于连接Socket、File、Selector以及管道(Pipe)的一个全新的概念,它要比Java IO中的流(Stream)…

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