日期:2014-05-18  浏览次数:20728 次

struts 的动态多文件上传用getMultipartRequestHandler.getFileElements()为什么只是上传了最后的一个文件?
请问   :     在做   动态   多   文件上传时(jsp页面表现为点击一个button新增一行或者说新增一个上传框)   用   如下代码   :

String   dirPath   =   getServlet().getServletContext().getRealPath( "/ ")
                                                  +   "/upload ";
                Hashtable   fileh   =   actionForm.getMultipartRequestHandler().
                                                    getFileElements();   //这里fileh.size()总是等于1
                for   (Enumeration   e   =   fileh.keys();   e.hasMoreElements();   )   {
                        String   key   =   (String)   e.nextElement();
                        try   {
                                FormFile   formfile   =   (FormFile)   fileh.get(key);
                                String   filename   =   formfile.getFileName().trim();  
                        *************  

    上传的结果只是上传了   最后一个上传框的文件   ,   而不是所有的文件(多个)   ,  
    fileh.size()   那里总是等于1,     请问这是   什么原因呢?
 


------解决方案--------------------
Hashtable elements = multipartRequestHandler.getFileElements();

// 循环遍历每一个文件
Collection values = elements.values();
int k = 0;
for (java.util.Iterator i = values.iterator(); i.hasNext();)
{
FormFile file = (org.apache.struts.upload.FormFile) i.next();
....
我作的时候是这样取的,没有问题
------解决方案--------------------
DiskFileUpload fu = new DiskFileUpload();

// 得到所有的文件:
List fileItems = fu.parseRequest(request);
Iterator i = fileItems.iterator();
------解决方案--------------------
我怎么传给你,网上有的commons-fileupload.jar
------解决方案--------------------
是不是用commons-fileupload-1.2的?

有時間看看。
http://www.strongd.net/blog/show/28
------解决方案--------------------
String dirPath = getServlet().getServletContext().getRealPath( "/ ") +
"/upload ";
Hashtable files = form.getMultipartRequestHandler().
getFileElements();
for(Enumeration e = files.keys(); e.hasMoreElements();) {
String key = (String) e.nextElement();
try {
FormFile formfile = (FormFile) files.get(key);
String filename = formfile.getFileName().trim();
if (! " ".equals(filename)) {
InputStream ins = formfile.getInputStream();