要注意的几点:
1.jsp页面。
1.1提交的form要写enctype="multipart/form-data",
<html:form action="/gamearticlesae?method=addnew" enctype="multipart/form-data"> </html:form>
1.2jsp页面用JS动态添加控件的方法:
js 代码
- <script>
- var idIndex=0;
- function addFile()
- {//添加表格的一行
- oTR=idTB.insertRow(idTB.rows.length);
- tmpNum=oTR.rowIndex;
- oTD=oTR.insertCell(0);
- oTD.innerText = tmpNum;//在该处添加的HTML代码会原封不动的显示在页面上
- alert(tmpNum);
- oTD.innerHTML ="<input type='file' name='file("< span="">+tmpNum+")'> <button onclick='removefile();'>delete
";//要在该格添加的HTML代码填在这里,因为这里是text,注意不要重名了。 - idLast.innerText=idTB.rows.length;
- if(idTB.rows.length>0)
- idFirst.innerText='1';
- return true;
- }
- function removeFile()
- {//删除表格的一行
- sIndex=idIndex.value;
- if(sIndex=='')
- sIndex=idTB.rows.length-1;
- else
- sIndex=parseInt(sIndex)-1;
- idTB.deleteRow(sIndex);
- idLast.innerText=idTB.rows.length;
- if(idTB.rows.length==0)
- idFirst.innerText='0';
- }
- </script>
相应的:
js 代码
- "addFile()" value="添加附件">
2.actionform的问题
因为附件的个数是不确定的,所以用
java 代码
private List files = new ArrayList();
public FormFile getFile(String index) {
return (FormFile) files.get(Integer.parseInt(index));
}
public void setFile(String index, FormFile file) {
this.files.add(file);
}
public List getFiles() {
return this.files;
}
3.action
java 代码
for (Enumeration e = fileh.keys(); e.hasMoreElements(); ) {
String key = (String) e.nextElement();
try {
FormFile formfile = (FormFile) fileh.get(key);
String filename = formfile.getFileName().trim(); //文件名
log.info("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ the filename is "+filename);
}
catch(Exception sse){}
}
Hashtable fileh=gamearticlesaeForm.getMultipartRequestHandler().getFileElements();
翻了下孙MM的书,
java 代码
<html:file property="xxx">
"file" NAME="xxx">
</html:file> 这样就OK了