附件地址:<input type="file" name="attach(0)" size="41"><a href="#" onclick="add()" ><font color="blue">追加附件
来添加附件。
var k=1;
function add(){
 var tab = document.getElementById("table1").insertRow(11);
 var col1 = tab.insertCell(0);
 col1.innerHTML="<input type='file' name='attach("+k+")'size='41'/><a href='javascript:del();'>删除</a>";
 k++;
}
我添加了多个,只能上传一个,上传的是name="attach(0)" 的这个。别的都不能上传。debug看了下ActionForm中MultipartRequestHandler里的elementsFile里只有一个{attach(0)=EPSnap.ini} 这是为什么呢

解决方案 »

  1.   

    参考:
    《script language="javascript" type="text/javascript"》function createElement(tagName, type, name){   var element = null;   try   {      element = document.createElement('《' + tagName + ' name="'+name+'" size=30 onchange="add();"/》');      element.type = type;      element.value = value;   }   catch (e)   {   }   if ( ! element)   {      element = document.createElement(tagName);      element.setAttribute("type", type);   }   return element;}// 动态创建表单控件的方法var i = 1;function add(){   // 动态创建控件名称   var name = "attachment" + i;   var input1 = createElement("input", "file", name);   var br = document.createElement("《br /》");   var files = document.getElementById("files");   files.appendChild(br);   files.appendChild(input1);   i ++ ;}《/script》《!--************************        附件************************--》《div id="files"》《input type="file" size="30" name="attachment0" onchange="add();" alt="选择后即可动态添加文件域"/》《input type="button" onclick="add();" value="多个附件" alt="手动添加文件域"/》 《font color=green》《a alt="不支持的文件类型将会被直接过滤掉"》支持的文件类型(.rar,.zip,.txt,.sql,.ini,.jpg,.bmp,.gif)《/a》《/font》《/div》Action中的关键代码:FormFile[] formFile = null;        // 得到所有的文件请求元素        Hashtable files = bbsForm.getMultipartRequestHandler()                .getFileElements();        if (files != null && files.size() 》 0)        {            // 初始化FormFile            formFile = new FormFile[files.size()];            // 得到files的keys            Enumeration enums = files.keys();            String fileKey = null;            int i = 0;            // 遍历枚举            while (enums.hasMoreElements())            {                // 取得key                fileKey = (String) (enums.nextElement());                System.out.println("key:" + fileKey);                // 初始化每一个FormFile(接口)                formFile[i] = (FormFile) files.get(fileKey);                // 分别上传                upload(formFile[i], request, bbs);                i++;            }        }upload方法:/**     * 文件上传的方法     *      * @param file     * @param request     * @param bbs     */    public void upload(FormFile file, HttpServletRequest request, Bbs bbs)    {        //只有选择了文件时才上传        if ("".equals(file.getFileName()) || null == file.getFileName())        {            return ;        }        // 得到当前网站的绝对路径        String path = this.getServlet().getServletContext().getRealPath("/");        FileOutputStream fileOutput;        try        {            // 文件操作            fileOutput = new FileOutputStream(path + "main/upload/"                    + file.getFileName());            fileOutput.write(file.getFileData());            fileOutput.flush();            fileOutput.close();            log.info("BbsAction:附件上传成功");        }        catch (FileNotFoundException e)        {            log.info("BbsAction:找不到文件");        }        catch (IOException e)        {            log.info("BbsAction:文件IO异常");        }        // 数据库操作        Fileupload fileupload = new Fileupload();        String basePath = request.getScheme() + "://" + request.getServerName()                + ":" + request.getServerPort() + request.getContextPath()                + "/";        fileupload.setFilename(basePath + "/main/upload/" + file.getFileName());        // 得到文件的扩展名        int point = file.getFileName().lastIndexOf(".");        String ext = file.getFileName().substring(point + 1);        //扩展名处理        if ("jpg".equals(ext.toLowerCase()) || "bmp".equals(ext.toLowerCase())                || "gif".equals(ext.toLowerCase()))        {            ext = "img";        }        if ("rar".equals(ext.toLowerCase()) || "zip".equals(ext.toLowerCase())                || "jar".equals(ext.toLowerCase()))        {            ext = "rar";        }        if("txt".equals(ext.toLowerCase()) || "sql".equals(ext.toLowerCase()) || "ini".equals(ext.toLowerCase()))        {            ext = "txt";        }        fileupload.setFileext(ext);        fileupload.setFilesize(file.getFileSize());        fileupload.setUptime(new Date());        fileupload.setDowncount(0);        fileupload.setUpuser(((User) request.getSession().getAttribute("user"))                .getUserName());        fileupload.setFlag((short) 0);        fileupload.setAnnounceId(bbs.getAnnounceId());        fileupload.setName(file.getFileName());        fileuploadManager.save(fileupload);        log.info("BbsAction:附件信息已经成功保存到数据库");    }
      

  2.   

    我这个动太添加上去的怎么都得不到,写死的写几个都能传上去。为什么?bbsForm.getMultipartRequestHandler().getFileElements();这句话只能得到写死的。动态添加的得不到!!! 
      

  3.   

    问题找到了,我的代码不支持firefox,用了IE就好用。至于怎么解决这个问题还没想好,谢谢你的帮助。