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

yizhihongxing

下面就来详细讲解如何使用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日

相关文章

  • 为什么在foreach循环中JAVA集合不能添加或删除元素

    为什么在foreach循环中JAVA集合不能添加或删除元素 在foreach循环中,JAVA集合是不允许添加或删除元素的。这是由于foreach循环需要遍历整个集合,而在循环过程中添加或删除元素会打乱集合中元素的顺序,从而可能导致遍历出错或漏掉某些元素,因此被JAVA设计者禁止了。 示例一: List<Integer> list = new Ar…

    Java 2023年5月20日
    00
  • 详解用java描述矩阵求逆的算法

    详解用Java描述矩阵求逆的算法 算法概述 在线性代数中,矩阵求逆是一个很重要的问题,它在各种科学计算中发挥着关键作用。矩阵求逆也被用于解决多元线性回归等问题。 基本上所有矩阵求逆算法都是基于高斯-约旦变换(Gauss-Jordan elimination)来工作的,该算法旨在通过对原始矩阵进行顺序消元、列缩放和行交换等操作,从而生成一个沿着对角线对称的单位…

    Java 2023年5月19日
    00
  • java的Hibernate框架报错“UnknownServiceException”的原因和解决方法

    当使用Java的Hibernate框架时,可能会遇到“UnknownServiceException”错误。这个错误通常是由于以下原因之一引起的: 未知的服务:如果您的服务未知,则可能会出现此错误。在这种情况下,需要检查您的服务以解决此问题。 服务名称错误:如果您的服务名称错误,则可能会出现此错误。在这种情况下,需要检查您的服务名称以解决此问题。 以下是两个…

    Java 2023年5月4日
    00
  • Java编程Post数据请求和接收代码详解

    下面我将对”Java编程Post数据请求和接收代码详解” 这个话题进行详细讲解。 一、什么是Post数据请求 Post数据请求是一种常见的HTTP请求方式,用于向Web服务器提交数据。与GET请求不同,POST请求的数据是在请求头之后的请求体中发送的。 Post数据请求常常用于表单提交、文件上传等场景,具有传输数据量大、安全性高等优点。 二、Java编程Po…

    Java 2023年5月20日
    00
  • android客户端从服务器端获取json数据并解析的实现代码

    下面是详细讲解 “Android客户端从服务器端获取Json数据并解析的实现代码” 的完整攻略: 一、获取Json数据并解析的基本流程 在Android应用中,使用HttpClient或OkHttp等Http客户端工具向服务器请求数据。 服务器端根据请求返回Json格式数据。 在Android应用中使用Json解析器(如Gson、FastJSON等)解析Js…

    Java 2023年5月26日
    00
  • Json转list二层解析转换代码实例

    下面是完整的攻略: 理解Json数据格式 在进行Json转list二层解析转换操作之前,我们需要先对Json数据格式有一定的了解。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输和存储。它的基本结构是一个键值对,用花括号包裹,例如: { "name": "张三&qu…

    Java 2023年5月26日
    00
  • 教你如何轻松学会Java快慢指针法

    教你如何轻松学会Java快慢指针法 概述 快慢指针法又叫双指针法,它是一种简单的算法,其核心思想依靠两个指针,一个快指针,一个慢指针来解决问题。在Java中的应用非常广泛,在链表、数组、字符串、树等数据结构中均能见到它的身影。它的时间复杂度通常是O(n),能极大的提高算法效率。 原理 快慢指针法的核心是两个指针,一个快指针,一个慢指针,它们的运动速度一般不同…

    Java 2023年5月26日
    00
  • jsp中点击图片弹出文件上传界面及预览功能的实现

    要实现JSP中点击图片弹出文件上传界面及预览功能,可以采用以下步骤: 导入相关依赖库和设置表单 首先需要在JSP页面中导入相关的依赖库,比如jQuery、layer等,以及设置一个表单用于文件上传。示例代码如下: <head> <script src="https://cdn.bootcdn.net/ajax/libs/jquer…

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