据调查好像可以用这段代码来实现
Hashtable hash=form.getMultipartRequestHandler().getFileElements();
      Iterator i = hash.values().iterator();
      FormFile formFile = null;
        while(i.hasNext()) {
            formFile = (FormFile)i.next();
            out = new java.io.FileOutputStream(new File(uploadpath + File.separator+filename));
            out.write(formFile.getFileData());
        }    }
但是我用form.getMultipartRequestHandler().getFileElements();取不到FORM中的项目啊,
得到一个NULL值,请教到底怎么回事?
FORM是如下定义的
<form-bean name="S4D2500_Form" type="org.apache.struts.validator.DynaValidatorActionForm">
<form-property name="inputFile" type="org.apache.struts.upload.FormFile"/>
</form-bean>

解决方案 »

  1.   

    对Struts本人了解但不熟悉.但可以肯定你这样做是不行的.
    总结一句就是:任何基于网页控件type=file 形式的多文件上传是不可能做到的.最好也只能通过JS来动态生成FILE控件,再通过一个一个的点浏览来上传多文件.
       这是由FILE控件本身的安全性决定的,具体的你可以看一下MSDN,或是HTML的控件文档(好像是叫什么REF23之类的名字,呵呵,记不清了.)
        要做到实际意义上的多文件上传(指的是:一次选定多个文件,跟操作本地文件夹一样的那种方式)必须用其它方式解决.比如说APPLET.
    所以你所说的那种方式可以放弃了.
     另:广告!!!    本人也写了一个多文件上传,是通过FLASH来实现的~可用于商业用途,有感兴趣的请联系:  [email protected]
      

  2.   

    1.html的form要设定:
    enctype="multipart/form-data"
    2.
    <form-bean name="lazyForm" type="org.apache.struts.validator.LazyValidatorForm"> 
    <form-property name="file" type="org.apache.struts.upload.FormFile[]"/> 
    </form-bean>
    3.
    String dirPath = getServlet().getServletContext().getRealPath("/") 
    + "/upload"; 
    Hashtable fileh = actionForm.getMultipartRequestHandler(). 
    getFileElements(); 
    for (Enumeration e = fileh.keys(); e.hasMoreElements(); ) { 
    String key = (String) e.nextElement(); 
    try { 
    FormFile formfile = (FormFile) fileh.get(key); 
    String filename = formfile.getFileName().trim(); //文件名 
    if (!"".equals(filename)) { 
    //不同的浏览器传上的文件名可能有区别,有的是全路径的 
    //在这里保存文件 
    InputStream ins = formfile.getInputStream(); 
    OutputStream os = new FileOutputStream(dirPath + 
    File.separatorChar 
    + filename); 
    int bytesRead = 0; 
    byte[] buffer = new byte[8192]; 
    while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { 
    os.write(buffer, 0, bytesRead); 

    os.close(); 
    ins.close(); } 
    } catch (Exception ex) { 
    logger.debug("出错了", ex); 

    }自己看着修改吧。
      

  3.   

    也可以看看:
    http://java.chinaitlab.com/Spring/39277.html
      

  4.   

    另:我现在用
    <form-bean name="lazyForm" type="org.apache.struts.validator.LazyValidatorForm"/>
    更加方便。只是页面,Action,设置,贴得太麻烦了,你自己试一下也很快。
      

  5.   

    http://blog.csdn.net/benq998/archive/2006/04/15/664170.aspx
      

  6.   

    楼主 的问题 和我的 类似 。我的是 :
    Hashtable fileh = actionForm.getMultipartRequestHandler().
                              getFileElements(); //这里fileh.size()总是等于1我的结果总是1 而楼主的是 null 而已 。这个问题 比较恼火,我查了好久都没查出原因来。我的帖连接是 :http://community.csdn.net/Expert/topic/5439/5439331.xml?temp=.7901422原因应该在jsp 页面和form 里吧 ,还望有人指点一下。