论坛首页 Java企业应用论坛

Structs实现多文件上传

浏览 5826 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-03  

使用apache的commons-fileupload包中的org.apache.struts.upload.MultipartRequestHandler来实现.
在org.apache.struts.upload.MultipartRequestHandler的源码中可以看到如下方法:
   /**
 Hashtable<wbr></wbr><wbr></wbr> getFileElements();

具体实现为,在action文件中加入如下代码:

java 代码
  1. MultipartRequestHandler multipartRequestHandler = form.getMultipartRequestHandler();   
  2.   Hashtable elements = multipartRequestHandler.getFileElements();   
  3.   
  4.   Collection values = elements.values();   
  5.   int k = 0;   
  6.      for (java.util.Iterator m= values.iterator(); m.hasNext();)   
  7.      {   
  8.       FormFile file = (org.apache.struts.upload.FormFile) m.next();   
  9.   
  10.        if (file == null || file.getFileSize() == 0  
  11.                   || file.getFileName().equals(""))   
  12.           {   
  13.               continue;   
  14.           }   
  15.           k++;   
  16.   
  17.    System.out.println(" formfile="+file.getFileName());   
  18.   }   

jsp页面是有要求的,
首先第一条要求Form表单 是带有enctype="multipart/form-data"属性
第二条是更关键的问题,也是我们容易出错的地方,要求每人file域不能是相同的名称,如果名称相同的话,multipartRequestHandler.getFileElements()只会得到同名file的最后一条,因为multipartRequestHandler.getFileElements();返回的对象是Hashtable,它是将file域的名称做为唯一Key值的,所以要求file域的名称不能相同,这是网上问的为什么只能上传最后一个文件的原因.
做到以上两点,那么structs多文件上传就ok了.

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics