struts中不限数量的多文件上传

曾经见过有人给出的最蠢的一个做法,是在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); 
            } 
        } 

 

 

你可能感兴趣的:(struts,浏览器,OS)