要注意的几点:
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 οnclick='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了