曾经见过有人给出的最蠢的一个做法,是在ActionForm里放了20个Formfile 类型的变量。
其实只需要下面一段代码即可。
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);
}
}