首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

struts 的动态多资料上传用getMultipartRequestHandler.getFileElements()为什么只是上传了最后的一个文件

2011-12-03 
struts 的动态多文件上传用getMultipartRequestHandler.getFileElements()为什么只是上传了最后的一个文件

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();


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) {
ex.printStackTrace();
}
}

热点排行