property 
        name="FileName" 
        type="java.lang.String" 
        column="FileName"

解决方案 »

  1.   

    建议按照如下步骤完成:
    1.JSP页面增加一个字段属性为formFile的文本框
      <html:form action="FileTest.do?method=upload" enctype="multipart/form-data">
         请选择文件:<html:file property="formfile"/>
         <a href="javascript:void(addFile());" class="file">添加附件</a> 
    <div id="fileDiv">
    <table id=conditionTable> 
    </table> 
    </div> 
         <html:submit property="" value="提交"/>
      </html:form>
    2.增加多行的JS脚本
    <script type="text/javascript">
    var i=0;
    function addFile(){
    i++;
    var currRow=conditionTable.insertRow(); //插入当前行
    var currCell=currRow.insertCell();//插入单元格
    var currCellContext="<input type=file name=formfile_"+ i +">&nbsp;&nbsp;<a href='javascript:void(0)' onclick='removeFile();'>去除</a><br/>";
    currCell.innerHTML=currCellContext; //填充单元格
    }

    function removeFile(){ 
    var o = findTD(event.srcElement); 
    conditionTable.deleteRow(o.parentElement.rowIndex); 
    }
    //查找table中td对象 
    function findTD(o){ 
    if (o.nodeName=="TR"||o.nodeName=="TABLE")
    return; 
    if(o.nodeName=="TD") 
    return (o); 
    else 
    return (o.parentElement); 
    }
    </script>特别注意的是:addFile()方法中增加表单上传域的HTML代码<input type=file name=formfile_"+ i +"> 定义的一个变量i是为了区别每个上传表单域的name。方便我们在action里集中将这些转换成对象存入HASHTABLE,如果name一样,则只能有一个被存入HASHTABLE.
    3.ActionForm 增加一字段 private FormFile formFile 对应页面上的那个上传文本框
    4.Action 依次取得多附件上传信息
    7. Action的设计。
    以下是文件上传的代码。该代码可以实现多文件上传,也可以只上传一个文件。
    利用actionForm.getMultipartRequestHandler().getFileElements();方法将表单中已有的上传域全部存进HASHTABLE,然后遍历,在通过FormFile转换成文件对象。在调用FormFile对象的get方法给VO对象赋值。最后将VO和FormFile一并交由DELEGEATE向下传递给DAO去处理。
    说明:本例中完全可以只传递一个FormFile对象一个参数。但考虑到表单可能包含其他一些业务字段信息也需要传递,故设计成传递两个参数
        public ActionForward upload(ActionMapping mapping, ActionForm actionForm,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {  
            //多附件上传,也可以只有一个附件,看在JSP页面中如何设计
            FileTestSVO info=new FileTestSVO();
            Hashtable ht=actionForm.getMultipartRequestHandler().getFileElements();
            for(Enumeration e =ht.keys();e.hasMoreElements();){
                String key=(String)e.nextElement();
                FormFile form=(FormFile)ht.get(key);
                String filetype=form.getFileName().toLowerCase();
                if(filetype.endsWith(".doc")||filetype.endsWith(".xls")||filetype.endsWith(".txt")){
                    info.setFilename(form.getFileName());
                    FileTestDelegate.getInstance().addFileBlob(info,form);
                }
            }
            return mapping.findForward("init");
        }这样就可以完成多附件上传咯
      

  2.   

    我用struts做表单和图片上传的时候在action里获取表单的内容总是为空