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