struts2实现多文件上传

首先,要实现多文件上传,需要在前端使用表单,并且表单中需要添加一个 enctype="multipart/form-data" 的属性,才能够让文件被正确解析和上传。同时,需要使用 type="file"<input> 标签来让用户选择文件。

在Struts2中,可以使用 org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper 类来获取上传的文件。使用步骤如下:

  1. 首先,在 struts.xml 中配置一个 action
<action name="uploadAction" class="com.example.UploadAction">
    <result name="success">/success.jsp</result>
    <result name="error">/error.jsp</result>
</action>
  1. UploadAction 类中,使用 ServletActionContext.getRequest() 获取request对象,再通过 MultiPartRequestWrapper 类获取上传文件:
public class UploadAction extends ActionSupport{
    private List<File> file;
    private List<String> fileContentType;
    private List<String> fileFileName;
    // 省略getter/setter方法
    @Override
    public String execute() throws Exception {
        HttpServletRequest request = ServletActionContext.getRequest();
        MultiPartRequestWrapper multiWrapper = (MultiPartRequestWrapper) request;
        File[] files = multiWrapper.getFiles("file");
        String[] contentTypes = multiWrapper.getContentTypes("file");
        String[] fileNames = multiWrapper.getFileNames("file");
        // 处理上传的文件
        // 省略处理文件的代码
        return SUCCESS;
    }
}

在上述代码中,MultiPartRequestWrappergetFiles()getContentTypes()getFileNames() 方法会返回数组,分别对应上传的文件、文件类型和文件名。

下面来看两个示例,一个实现单个文件上传,一个实现多个文件上传。

示例一:实现单文件上传

首先,在 UploadAction 类中,定义一个 File 类型的字段,通过 getter/setter 方法,使它能够被访问和赋值:

public class UploadAction extends ActionSupport{
    private File file;
    private String fileContentType;
    private String fileFileName;
    // 省略getter/setter方法
    @Override
    public String execute() throws Exception {
        HttpServletRequest request = ServletActionContext.getRequest();
        MultiPartRequestWrapper multiWrapper = (MultiPartRequestWrapper) request;
        File[] files = multiWrapper.getFiles("file");
        String[] contentTypes = multiWrapper.getContentTypes("file");
        String[] fileNames = multiWrapper.getFileNames("file");
        if(files != null && files.length > 0) {
            file = files[0];
            fileContentType = contentTypes[0];
            fileFileName = fileNames[0];
            // 处理上传的文件
            // 省略处理文件的代码
            return SUCCESS;
        }else{
            return ERROR;
        }
    }
}

然后,在前端添加一个表单,通过 type="file"<input> 标签让用户选择要上传的文件:

<form action="uploadAction" method="post" enctype="multipart/form-data">
    <input type="file" name="file"/>
    <input type="submit" value="Upload"/>
</form>

最后,在 struts.xml 中配置 UploadAction

<action name="uploadAction" class="com.example.UploadAction">
    <result name="success">/success.jsp</result>
    <result name="error">/error.jsp</result>
</action>

示例二:实现多文件上传

UploadAction 类中,定义一个 List<File> 类型的字段,通过 getter/setter 方法,使它能够被访问和赋值:

public class UploadAction extends ActionSupport{
    private List<File> files;
    private List<String> filesContentType;
    private List<String> filesFileName;
    // 省略getter/setter方法
    @Override
    public String execute() throws Exception {
        HttpServletRequest request = ServletActionContext.getRequest();
        MultiPartRequestWrapper multiWrapper = (MultiPartRequestWrapper) request;
        File[] temps = multiWrapper.getFiles("file");
        String[] contentTypes = multiWrapper.getContentTypes("file");
        String[] fileNames = multiWrapper.getFileNames("file");
        if(temps != null && temps.length > 0) {
            files = new ArrayList<>(Arrays.asList(temps));
            filesContentType = Arrays.asList(contentTypes);
            filesFileName = Arrays.asList(fileNames);
            // 处理上传的文件
            // 省略处理文件的代码
            return SUCCESS;
        }else{
            return ERROR;
        }
    }
}

然后,在前端添加一个表单,通过 type="file"<input> 标签,添加multiple属性, 来让用户选择要上传的文件:

<form action="uploadAction" method="post" enctype="multipart/form-data">
    <input type="file" name="file" multiple />
    <input type="submit" value="Upload"/>
</form>

最后,在 struts.xml 中配置 UploadAction

<action name="uploadAction" class="com.example.UploadAction">
    <result name="success">/success.jsp</result>
    <result name="error">/error.jsp</result>
</action>

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

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

相关文章

  • jsp 开发之struts2中s:select标签的使用

    JSP开发之Struts2中S:select标签的使用 在Struts2中使用s:select标签可以方便地创建下拉框,通过本文,您可以了解s:select标签的使用方法,包括其属性和示例。 基本语法 <s:select name="selectName" list="listValue" value=&quot…

    Java 2023年6月15日
    00
  • SpringBoot自定义Starter与自动配置实现方法详解

    SpringBoot自定义Starter与自动配置实现方法详解 什么是SpringBoot Starter SpringBoot Starter是一种用于扩展SpringBoot框架功能的一种技术手段,它可以将应用程序中涉及到的依赖库集成到SpringBoot环境中,使得应用程序更加简单、灵活且易于扩展。 Starter的实现过程主要有自定义Starter和…

    Java 2023年5月20日
    00
  • JSP数据交互实现过程解析

    JSP数据交互实现过程解析 JSP是动态网页技术之一,需要数据交互才能实现其动态的功能。本文将详细讲解JSP数据交互的实现过程,包括HTTP请求方法、JSP表单提交、JSP Servlet实现数据交互、JSP EL表达式、JSP标签库等方面。 HTTP请求方法 HTTP请求方法是指Web浏览器向Web服务器请求数据的方式,常用的HTTP请求方法有GET和PO…

    Java 2023年6月15日
    00
  • 如何设置JVM参数?

    设置JVM参数是优化Java应用程序性能的重要步骤之一,本文将会详细讲解如何设置JVM参数,包括如何选择合适的参数以及如何应用这些参数。 1. 选择JVM参数 在为Java应用程序选择JVM参数时,需要考虑以下因素: 内存大小:Java应用程序需要有足够的内存来支持其运行,因此需要设置合适的内存参数; 应用场景:不同的应用场景需要不同的JVM参数,比如Web…

    Java 2023年5月10日
    00
  • 详解Spring Boot实战之Rest接口开发及数据库基本操作

    下面为您详细讲解“详解Spring Boot实战之Rest接口开发及数据库基本操作”的完整攻略。 1. 背景介绍 在Web开发中,RESTful API是一种非常流行的架构风格,它能够提供简单、易用、灵活的接口服务。而Spring Boot作为一个现代化的Java Web框架,则能够非常好地实现RESTful API的开发。 本攻略将为您介绍如何使用Spri…

    Java 2023年5月19日
    00
  • Spring Boot启动流程分析

    我来为您讲解关于“SpringBoot启动流程分析”的完整攻略。 SpringBoot启动流程分析 SpringBoot是基于Spring的一个快速开发新一代Java框架,其简化了Spring应用的开发流程,同时也隐藏了Spring框架配置的复杂性,在不需要过多配置的情况下,实现快速搭建Spring应用。 SpringBoot应用的启动过程可以分为以下几个步…

    Java 2023年5月15日
    00
  • Struts2之Action接收请求参数和拦截器详解

    Struts2之Action接收请求参数和拦截器详解 本文主要介绍了如何在Struts2中使用Action来接收请求参数,并通过拦截器对Action进行增强。 Action接收请求参数 在Struts2中,我们可以通过Action来获取请求中的参数。 获取参数的方式 直接在Action的成员变量中声明参数,并提供setter方法,Struts2会自动为我们注…

    Java 2023年5月20日
    00
  • JAVA代码块你了解吗

    当提到Java代码块时,一般指的是静态代码块和实例代码块。这两种代码块通常用于在类被实例化之前或初始化之前执行某些操作。下面我将详细讲解Java代码块的使用方法和注意事项,包括静态代码块和实例代码块的具体作用和范围、执行顺序以及示例说明。 Java代码块的作用和范围: 静态代码块:它用于在类被加载到内存中时执行初始化或一次性操作。静态代码块是用 static…

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