property
name="FileName"
type="java.lang.String"
column="FileName"
name="FileName"
type="java.lang.String"
column="FileName"
解决方案 »
- 如何利用SQL中数据使用FreeMarker生成JAVA实体bean代码
- 使用hibernate,对象怎么处理数据字典
- ApplicationContext.xml里声明了一个接口,提示错误,求助
- sql在oracle中可以运行,到Hibernate中有错。(功能过滤重复记录功能)
- java怎么样读取xml文档阿?希望大家能给点资料,最好是能给各例子 ,谢谢了
- 关于webservice的实例化问题,请大家进来看看!!!!
- weblogic老是重启的问题
- [请教]安装Tomcat...?
- 谁有java的小论文,2000字左右.谢谢!!
- 请问jsp可以调用EJB吗?
- 建行的开发工具SUP4J问题,高手进来指点下!!
- js中访问webservice时出现"invalid active port"错误
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 +"> <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");
}这样就可以完成多附件上传咯