`
shirly0418
  • 浏览: 14821 次
  • 性别: Icon_minigender_2
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

如何用struts实现动态(不定数量)多文件上传?

阅读更多
前几天遇到如题目描述问题,要求象163邮箱附件那样的效果。从网上找了半天也没解决,自己断续的尝试了几天才弄出来。为了能帮以后的朋友遇到类似问题的朋友顺利解决问题,特在此描述。

主要代码如下

Form部分:

public class MultiUploadForm extends ActionForm {
    private List myFiles;
    public MultiUploadForm(){
        myFiles = new ArrayList();
        //为了能够在页面初始显示一个file
        myFiles.add(new UploadFile());
    }
    public List getMyFiles() {
        return myFiles;
    }   

  //注意这个方法的定义

   public UploadFile getUploadFile(int index){
        int size = myFiles.size();
        if(index>size-1){
            myFiles.add(new UploadFile());
        }
        return (UploadFile)myFiles.get(index);
    }
    public void setMyFiles(List myFiles) {
        this.myFiles = myFiles;
    }
}

Dataset部分:
public class UploadFile implements Serializable {
    private FormFile file;
    public FormFile getFile() {
        System.out.println("run in uploadFile.getFile()");
        return file;
    }
    public void setFile(FormFile file) {
        this.file = file;
    }
}
Action部分:
public class MultiUploadAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response) {
        MultiUploadForm multiUploadForm = (MultiUploadForm) form;
        List myFiles = multiUploadForm.getMyFiles();
        for(int i =0;i<myFiles.size();i++){
            UploadFile uploadFile = (UploadFile)myFiles.get(i);
            FormFile file = uploadFile.getFile();

            if(file==null){
                System.out.println("file is null");
            }
            else{

                //能运行到这里,就可以使用单个文件上传的方法进行上传了。循环而已
                System.out.println("filename:::" + file.getFileName());
                System.out.println("file size:::" + file.getFileSize());
            }
        }

        return null;
    }
}

JSP部分:

<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>

<html:html>
<head>
<title>
multiUploadDemo
</title>
</head>
<script language="javascript" type="">
   var num = 0;
   function addFile(){
      var innerHTML = multiUploadForm.innerHTML;
      var signal = "<TD id=tdTarget>";
      var signalLen = signal.length;
      var targetIndex = innerHTML.indexOf(signal);

      var preHTML = innerHTML.substring(0,(targetIndex-6));
      var subHTML = innerHTML.substring(targetIndex-6);
      num++;
      var insertHTML = "<TR><TD><input type=file name=uploadFile["+ num + "].file value=''></TD>";
      innerHTML = preHTML + insertHTML + subHTML;

      multiUploadForm.innerHTML = innerHTML;
      //alert(multiUploadForm.innerHTML);
   }
   function upload(){
     multiUploadForm.submit();
   }
</script>
<body bgcolor="#ffffff">
<html:form method="post" action="/multiUploadAction.do" enctype="multipart/form-data">
<table border="1">
<TBODY>
<br><br>

this is file
  <nested:iterate id="uploadFile" property="myFiles" name="multiUploadForm" indexId="index">
      <nested:nest property="uploadFile">
        <nested:file property="file" name="uploadFile" indexed="true"/>
      </nested:nest>
  </nested:iterate>


<TR>
  <input type="button" name="btnAddFile" value="Add File" onclick="addFile()"/>
  <TR><TD id="tdTarget"></TD>
  <input type="button" name="btnUpload" value="upload" onclick="upload()">
</TBODY>
</table>
</html:form>
</body>
</html:html>

struts-config.xml部分:

  <form-beans>
    <form-bean name="multiUploadForm" type="MultiUploadForm" />
  </form-beans>

<action name="multiUploadForm" path="/multiUploadAction" type="MultiUploadAction" />

以上只是对动态多文件上传部分进行了描述,只是一个Demo。大家可以根据自己的需求变通的调整一下。

肯定大家有更好的方法,欢迎讨论。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wts/archive/2006/03/20/630083.aspx
分享到:
评论

相关推荐

    struts1.2实现动态多文件上传

    总的来说,Struts1.2实现动态多文件上传涉及前端表单设计、后端处理逻辑、文件上传组件的使用以及文件的存储策略。在实际开发中,还需要考虑性能优化、错误处理和用户体验等方面的问题。提供的压缩包文件“Struts1.2...

    struts2实现多文件上传下载

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

    struts2实现的多个文件上传

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

    struts实现的文件上传下载功能

    总结起来,使用Struts实现文件上传下载涉及前端表单设计、后端处理逻辑、文件存储策略以及安全控制等多个方面。在实践中,我们还需要考虑到性能优化和用户体验提升,例如使用异步上传、进度条展示等技术。

    struts2实现文件上传下载

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。

    struts与hibernate实现文件的上传与动态下载

    本篇文章将详细讲解如何利用Struts2.2和Hibernate3.6实现文件的上传与动态下载。 **一、文件上传** 1. **环境配置**:首先,你需要一个集成开发环境,例如MyEclipse8.6,并安装所需的Struts2.21、JUnit4.8.2以及...

    Struts2多个文件上传

    本文将详细讲解如何使用Struts2进行多个文件的上传,重点是使用List集合进行上传。 首先,要实现Struts2的文件上传,必须引入必要的依赖库。主要需要两个Apache Commons库:`commons-fileupload-1.2.2.jar`和`...

    struts2实现多文件上传功能

    Struts2提供了完善的文件上传支持,让我们来详细探讨如何在Struts2中实现多文件上传。 首先,我们需要在Struts2的配置文件(struts.xml)中启用文件上传的支持。这通常涉及到添加`&lt;constant&gt;`标签来设置`struts....

    struts 文件上传 Struts实现文件上传

    Struts 是一个基于MVC(Model-View-Controller)...总结,Struts 实现文件上传涉及到配置、表单设计、Action处理和安全控制等多个环节。理解并熟练掌握这些知识点,能帮助开发者在实际项目中高效地处理文件上传需求。

    基于Javascript和Struts不定数量文件上传的设计.pdf

    "基于Javascript和Struts不定数量文件上传的设计" 本文主要讨论了基于Javascript和Struts不定数量文件上传的设计思想。该设计解决了传统文件上传方法的不足之处,即无法满足用户的需求,无法上传不定数量的文件,且...

    swfuplaod+struts2实现多文件上传

    下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用Flash技术提供了一个高级的文件上传体验。它的主要特性包括: 1. **多文件选择**...

    struts1实现的文件批量上传

    在本文中,我们将探讨如何使用Struts1框架实现文件的批量上传功能。Struts1是一个经典的Java Web应用程序框架,它提供了模型-视图-控制器(MVC)架构,用于构建动态Web应用。在Struts1中实现文件上传,我们需要考虑...

    struts1实现文件上传

    ### Struts1 实现文件上传的关键技术点 在Struts1框架中实现文件上传功能是一项常见但又具有一定技术挑战的任务。下面将详细解析文件上传的实现过程,包括关键类的使用、文件处理逻辑以及异常处理等方面。 #### ...

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

    在Struts中,可以实现单文件和多文件的上传,并且为了提升用户体验,我们还可以添加进度条来显示文件上传的状态。本文将详细介绍如何在Struts中实现这两个功能,并带上传进度条。 首先,我们需要了解Struts中处理...

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

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

    使用struts2实现的文件上传功能

    在Struts2框架中实现文件上传功能是一项常见的任务,这通常涉及到用户通过表单提交文件,服务器端接收并处理这些文件。在这个场景中,我们将探讨如何使用Struts2来实现这一功能。 首先,你需要在项目中引入Struts2...

    struts2+jquery+ajax文件异步上传

    Struts2、jQuery和Ajax是Web开发中的三个关键组件,它们共同构成了文件异步上传的基础框架。这个项目是在MyEclipse环境下实现的一个简单的文件上传功能,让我们深入了解一下这些技术及其在文件上传中的应用。 首先...

    JavaEE Struts文件上传

    JavaEE Struts 文件上传是Web开发中的一个常见需求,它允许用户从客户端向服务器传输文件。Struts作为JavaEE框架的一部分,提供了强大的功能来处理这种交互。以下是对这个主题的详细解析。 首先,理解文件上传的...

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

    本实例主要探讨如何在Struts1中实现多文件上传功能,并结合Form中传递List类型的数据,这对于理解MVC模式下的文件处理和数据传递有重要作用。我们将深入讨论以下几个关键知识点: 1. **Struts1框架基础**: Struts...

Global site tag (gtag.js) - Google Analytics