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日

相关文章

  • Java编程异常处理最佳实践【推荐】

    Java编程异常处理最佳实践【推荐】 异常是Java编程的重要组成部分。良好的异常处理可以更好地保证程序的健壮性、可读性和可维护性。下面是Java编程异常处理的最佳实践: 1. 异常类型的选择 Java中提供了一些异常类型,例如Checked Exception、UnChecked Exception和Error。在编写代码时,需要根据具体的情况选择合适的异…

    Java 2023年5月27日
    00
  • SpringBoot超详细讲解@Enable*注解和@Import

    细致讲解@Enable*注解和@Import注解在SpringBoot中的用法: @Enable*注解 @Enable注解是SpringBoot中用来启用某些功能的注解,它们定义在org.springframework.boot.autoconfigure包中,以下是一些常用的@Enable注解: @EnableAutoConfiguration:自动配置,…

    Java 2023年5月19日
    00
  • Spring Boot使用模板引擎JSP实例解析

    针对“Spring Boot使用模板引擎JSP实例解析”的完整攻略,我将按照以下步骤逐一解析: 1. 添加依赖 首先,我们需要在pom.xml中添加JSP依赖。在<dependencies>标签内添加以下代码: <dependencies> <!– 省略其他依赖 … –> <dependency> &l…

    Java 2023年5月19日
    00
  • Java实现简单的万年历

    下面就是讲解实现Java简单的万年历的攻略及示例说明: 1. 确定需求和功能 在实现Java简单的万年历之前,我们需要定义该项目的需求和功能,以便能够更好地进行程序设计和编写。以下是常见的需求和功能: 能够查询指定日期的日历; 能够查询制定月份和年份的日历; 能够查询当前日期的日历; 能够显示节假日和纪念日等特殊日期。 2. 时间库的选择 为了实现Java简…

    Java 2023年5月19日
    00
  • 零基础写Java知乎爬虫之先拿百度首页练练手

    以下是零基础写Java知乎爬虫之先拿百度首页练练手的完整攻略: 步骤一:准备工作 首先,我们需要安装Java开发环境(JDK),推荐使用Oracle JDK。然后,我们需要安装一个Java代码编辑器,比如Eclipse、IntelliJ IDEA等。接着,我们需要导入一个Java爬虫框架——Jsoup。 步骤二:编写Java代码 编写Java代码的过程分为以…

    Java 2023年5月26日
    00
  • Java C++实现相同MD5加密算法的方式

    要在Java和C++中实现相同的MD5加密算法,需要借助各自语言中现成的库或函数来实现。以下是详细过程: 1. Java中的MD5加密 Java中实现MD5加密可以使用标准库中的java.security.MessageDigest类。使用该类需要以下步骤: 步骤一:声明MessageDigest对象 MessageDigest md = MessageDi…

    Java 2023年5月19日
    00
  • Tomcat部署Bolo动态博客

    下面是详细讲解如何在Tomcat上部署Bolo动态博客的完整攻略: 准备工作 下载Bolo动态博客的源代码,可以从官方GitHub仓库或其他源中获取:https://github.com/bolo/bolo 安装Java和Tomcat,可以从官方网站下载安装包并按照提示完成安装,建议使用JDK 8版本和Tomcat 8.5版本及以上。 在Tomcat的/co…

    Java 2023年5月19日
    00
  • javascript 对象 与 prototype 原型用法实例分析

    JavaScript 对象与 Prototype 原型用法实例分析 JavaScript 中的对象是非常重要的概念,它是用来封装相关属性和行为的数据类型,JavaScript 对象实际上是一个特殊的键值对集合,每个键值对被称为一个属性或者方法。 JavaScript 中对象的创建有很多方式,包括字面量语法、构造函数语法、Object.create() 等,本…

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