`

{转}struts里一次上传多个文件的方法。

阅读更多

UploadAction.java

package action;

import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
import java.util.List;  

import org.apache.struts2.ServletActionContext;  
import com.opensymphony.xwork2.ActionSupport;  

//文件上传Action  
public class UploadAction extends ActionSupport {  
    //上传文件存放路径  
    private final static String UPLOADDIR = "/upload";  
    //上传文件集合  
    private List<File> file;  
    //上传文件名集合  
    private List<String> fileFileName;  
    //上传文件内容类型集合  
    private List<String> fileContentType;  

    public List<File> getFile() {  
        return file;  
    }  

    public void setFile(List<File> file) {  
        this.file = file;  
    }  

    public List<String> getFileFileName() {  
        return fileFileName;  
    }  

    public void setFileFileName(List<String> fileFileName) {  
        this.fileFileName = fileFileName;  
    }  

    public List<String> getFileContentType() {  
        return fileContentType;  
    }  

    public void setFileContentType(List<String> fileContentType) {  
        this.fileContentType = fileContentType;  
    }  

    public String execute() throws Exception {  
        for (int i = 0; i < file.size(); i++) {  
            //循环上传每个文件  
            uploadFile(i);  
        }  
        return "success";  
    }  

    //执行上传功能  
    private void uploadFile(int i) throws FileNotFoundException, IOException {  
        try {  
            InputStream in = new FileInputStream(file.get(i));  
            String dir = ServletActionContext.getRequest().getRealPath(UPLOADDIR);  
            File uploadFile = new File(dir, this.getFileFileName().get(i));  
            OutputStream out = new FileOutputStream(uploadFile);  
            byte[] buffer = new byte[1024 * 1024];  
            int length;  
            while ((length = in.read(buffer)) > 0) {  
                out.write(buffer, 0, length);  
            }  

            in.close();  
            out.close();  
        } catch (FileNotFoundException ex) {  
            ex.printStackTrace();  
        } catch (IOException ex) {  
            ex.printStackTrace();  
        }  
    }  
}

===================================

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>  
    <!-- 系统常量定义,定义上传文件字符集编码 -->  
    <constant name="struts.i18n.encoding" value="utf-8"></constant>  
    <!-- 系统常量定义,定义上传文件临时存放路径 -->  
    <constant name="struts.multipart.saveDir" value="d:\"></constant>  
    <!-- Action所在包定义 -->  
    <package name="action" extends="struts-default">  
        <!-- Action名字,类以及导航页面定义 -->  
        <!-- 通过Action类处理才导航的的Action定义 -->  
        <action name="upload" class="action.UploadAction">  
            <result name="input">upload.jsp</result>  
            <result name="success">result.jsp</result>  
        </action>  
    </package>  
</struts>

====================================

jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="/struts-tags" prefix="s" %>  
<html>  
    <head>  
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
        <title>上传文件</title>  
    </head>  
    <body>  
    <!-- 上传文件表单定义 -->  
    <s:form action="upload" method="post" enctype="multipart/form-data">  
        <tr>  
    <!-- 上传文件标签定义 -->  
    <td>上传文件:<s:file name="file"></s:file></td>  
    </tr>  
    <tr>  
    <td>再次上传文件:<s:file name="file"></s:file></td>  
    </tr>  
    <tr>  
    <td align="left"><s:submit name="submit" value="提交"></s:submit></td>  
    </tr>  
    </s:form>  
    </body>  
</html>

jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="/struts-tags" prefix="s" %>  
<html>  
    <head>  
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
        <title>上传文件</title>  
    </head>  
    <body>  
    <!-- 上传文件表单定义 -->  
    <s:form action="upload" method="post" enctype="multipart/form-data">  
        <tr>  
    <!-- 上传文件标签定义 -->  
    <td>上传文件:<s:file name="file"></s:file></td>  
    </tr>  
    <tr>  
    <td>再次上传文件:<s:file name="file"></s:file></td>  
    </tr>  
    <tr>  
    <td align="left"><s:submit name="submit" value="提交"></s:submit></td>  
    </tr>  
    </s:form>  
    </body>  
</html>

分享到:
评论

相关推荐

    Struts2多个文件上传

    在Struts2中,文件上传功能是一个常用特性,尤其在处理用户提交的多个文件时。本文将详细讲解如何使用Struts2进行多个文件的上传,重点是使用List集合进行上传。 首先,要实现Struts2的文件上传,必须引入必要的...

    一个Struts1多文件上传实例(附Form中传List示例)

    表单中可以包含一个List类型的参数,允许用户输入多个值。在HTML中,这可以通过多次使用相同name属性的input元素实现。在Struts1中,ActionForm类需要有一个对应的List字段来接收这些值,这样在提交表单时,Struts1...

    使用struts1.x上传多个文件的一中方法

    在Struts1.x中,实现文件上传功能是一个常见的需求,特别是在处理用户提交的表单时需要包含多个文件。下面我们将详细介绍如何使用Struts1.x来实现多个文件的上传。 首先,我们需要在HTML表单中添加`...

    struts1上传多个文件同时

    要实现多个文件的同时上传,我们需要利用一些额外的工具或库来扩展Struts1的功能。 在描述中提到的"jquery multi"可能是指jQuery的某个插件,用于实现前端的多文件选择和预览,例如`jQuery Multi File Uploader`或`...

    用struts上传多个文件的方法

    这里定义了两个文件上传字段`theFile`和`theFile2`,并通过`validate`方法检查文件大小是否超过了最大限制。 ##### 3.3 实现Action 接下来需要创建一个Action类来处理文件上传的具体逻辑。以`UpLoadAction`为例: ...

    struts2实现的多个文件上传

    下面将详细阐述如何使用Struts2来实现多个文件的上传。 首先,理解文件上传的基本原理。在HTTP协议中,文件上传通常通过multipart/form-data编码类型来实现。这种编码方式将表单数据分割成多个部分,每部分包含一个...

    Struts2实现单个文件多个文件上传与下载-多个拦截器

    本项目主要展示了如何在Struts2框架下实现单个文件和多个文件的上传及下载,并且运用了多个拦截器来增强功能和安全性。 首先,让我们详细了解一下文件上传的过程。在Struts2中,文件上传主要依赖于`struts2-...

    struts1 多个文件上传

    这篇内容将深入探讨Struts1中的单个文件上传和多个文件上传的实现机制。 首先,我们来看单个文件上传。在Struts1中,要实现文件上传,你需要在表单中包含一个`&lt;input type="file"&gt;`标签,并在ActionForm中创建对应...

    struts上传多文件

    在实际应用中,有时我们需要同时上传多个文件,这在Struts中是可以实现的。本篇文章将深入讲解如何在Struts框架中实现多文件上传。 首先,了解Struts2文件上传的基本原理。Struts2使用了Apache的Commons FileUpload...

    struts1.x多文件上传

    文件上传功能是Web应用中常见的需求之一,特别是在处理用户需要提交多个文件的场景下。Struts1.x提供了处理多文件上传的功能,使得开发者可以方便地集成到自己的应用程序中。 在Struts1.x中实现多文件上传,主要...

    struts多文件上传

    在Struts1.2版本中,实现多文件上传是一项常见的需求,它允许用户在一次提交中上传多个文件,这对于数据交互、资源分享等场景非常实用。在本教程中,我们将深入探讨如何在Struts1.2中实现这一功能。 首先,理解多...

    struts2实现文件上传下载

    在处理文件上传时,开发者需要在Action类中声明一个`List&lt;FileInfo&gt;`类型的字段,用于接收上传的文件信息。`FileInfo`是自定义的类,包含`File`对象和`String`对象,分别表示上传文件的实际内容和文件名。 1. **...

    struts2实现多文件上传下载

    1.能够对多个文件进行上传(可以选择上传文件个数,也即上传文件个数不定) 2.能够对上传路径进行配置文件指定(upload.properties),使用了一些类似单例模式的静态代码块 3.Struts2进行下载处理,能对上传的所有...

    swfuplaod+struts2实现多文件上传

    3. **并行上传**:允许同时上传多个文件,提高上传速度。 4. **分片上传**:对于大文件,可以采用分片上传,降低网络中断的影响。 通过上述步骤和注意事项,你可以利用SWFUpload和Struts2构建一个功能强大且安全的...

    struts2多文件的上传

    在本项目中,"struts2多文件的上传"实现了用户一次性上传多个文件的能力。 要理解这个功能,首先我们需要了解Struts2中的Action类和Interceptor(拦截器)。Action类是处理用户请求的核心,而Interceptor则用于处理...

    struts1实现文件上传

    1. **定义ActionForm**:首先需要定义一个继承自`ActionForm`的类,该类中包含一个或多个`FormFile`类型的成员变量,用来接收用户上传的文件。 2. **配置文件上传**:在`struts-config.xml`配置文件中指定允许上传...

    struts2实现文件上传(单个+多个文件上传

    ### Struts2实现文件上传(单个+多个文件上传) #### 一、单个文件上传 在Struts2框架中实现文件上传是一项常见的需求。本文将详细介绍如何在Struts2中实现单个文件的上传。 ##### JSP 页面设计 首先,我们需要在...

    struts 单文件上传和多文件上传带进度条

    在Action类中,我们需要定义一个或多个`java.io.File`或`org.apache.struts2.dispatcher.multipart.FileItem`类型的属性,这些属性会被用来存储上传的文件。 对于单文件上传,我们需要在表单中添加一个`...

    struts2实现多文件上传功能

    通过组合使用Struts2的配置、Action类和HTML表单,我们可以轻松地处理多个文件的上传操作。这个过程中的关键知识点包括:Struts2拦截器、文件上传配置、Action类设计、HTML表单的构建以及服务器端的文件处理逻辑。

Global site tag (gtag.js) - Google Analytics