以下内容为转自网络,要注意的是jsp页面中<html:form>我名称要正确.还有就是修改了public UploadFile getUploadFile(int index){
int size = myFiles.size();
if (index > size-1) {
for (int i=0;i<index-size+1;i++){
myFiles.add(new UploadFile());
}
}
加了for循环,没加之前超过三个文件会报错.
以下是全部内容
Form部分:
public class MultiUploadForm extends ActionForm {
private List myFiles;
public MultiUploadForm(){
myFiles = new ArrayList();
//为了能够在页面初始显示一个file
myFiles.add(new UploadFile());
}
public List getMyFiles() {
return myFiles;
}
//注意这个方法的定义
public UploadFile getUploadFile(int index){
int size = myFiles.size();
if (index > size-1) {
for (int i=0;i<index-size+1;i++){
myFiles.add(new UploadFile());
}
}
public void setMyFiles(List myFiles) {
this.myFiles = myFiles;
}
}
Dataset部分:
public class UploadFile implements Serializable {
private FormFile file;
public FormFile getFile() {
System.out.println("run in uploadFile.getFile()");
return file;
}
public void setFile(FormFile file) {
this.file = file;
}
}
Action部分:
public class MultiUploadAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
MultiUploadForm multiUploadForm = (MultiUploadForm) form;
List myFiles = multiUploadForm.getMyFiles();
for(int i =0;i<myFiles.size();i++){
UploadFile uploadFile = (UploadFile)myFiles.get(i);
FormFile file = uploadFile.getFile();
if(file==null){
System.out.println("file is null");
}
else{
//能运行到这里,就可以使用单个文件上传的方法进行上传了。循环而已
System.out.println("filename:::" + file.getFileName());
System.out.println("file size:::" + file.getFileSize());
}
}
return null;
}
}
JSP部分:
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
<html:html>
<head>
<title>
multiUploadDemo
</title>
</head>
<script language="javascript" type="">
var num = 0;
function addFile(){
var innerHTML = multiUploadForm.innerHTML;
var signal = "<TD id=tdTarget>";
var signalLen = signal.length;
var targetIndex = innerHTML.indexOf(signal);
var preHTML = innerHTML.substring(0,(targetIndex-6));
var subHTML = innerHTML.substring(targetIndex-6);
num++;
var insertHTML = "<TR><TD><input type=file name=uploadFile["+ num + "].file value=''></TD>";
innerHTML = preHTML + insertHTML + subHTML;
multiUploadForm.innerHTML = innerHTML;
//alert(multiUploadForm.innerHTML);
}
function upload(){
multiUploadForm.submit();
}
</script>
<body bgcolor="#ffffff">
<html:form method="post" action="/multiUploadAction.do" enctype="multipart/form-data">
<table border="1">
<TBODY>
<br><br>
this is file
<nested:iterate id="uploadFile" property="myFiles" name="multiUploadForm" indexId="index">
<nested:nest property="uploadFile">
<nested:file property="file" name="uploadFile" indexed="true"/>
</nested:nest>
</nested:iterate>
<TR>
<input type="button" name="btnAddFile" value="Add File" onclick="addFile()"/>
<TR><TD id="tdTarget"></TD>
<input type="button" name="btnUpload" value="upload" onclick="upload()">
</TBODY>
</table>
</html:form>
</body>
</html:html>
struts-config.xml部分:
<form-beans>
<form-bean name="multiUploadForm" type="MultiUploadForm" />
</form-beans>
<action name="multiUploadForm" path="/multiUploadAction" type="MultiUploadAction" />
以上只是对动态多文件上传部分进行了描述,只是一个Demo。大家可以根据自己的需求变通的调整一下。
肯定大家有更好的方法,欢迎讨论。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=630083
分享到:
相关推荐
struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载
Struts2文件上传源码 Struts2文件上传源码 Struts2文件上传源码 Struts2文件上传源码 Struts2文件上传源码
struts 文件上传 Struts实现文件上传
struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传
struts 单文件上传和多文件上传带进度条
在struts2基础上实现的包括单文件、多文件的上传及下载
JavaEE Struts文件上传
Struts jquery AJAX 文件上传
struts2文件上传实例,程序员宝典......
struts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileupload
使用struts1实现文件上传和下载,上传有单文件上传,多文件上传,动态添加上传文件域。
struts文件上传.pdf 文件上传struts文件上传.pdf 文件上传struts文件上传.pdf 文件上传struts文件上传.pdf 文件上传
里面包括的是实现struts2文件上传所需要的全部jar包
Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的...
struts2文件上传的两种方法,单文件上传与多文件上传,很经典的,是我总结的两种方法,要看struts2文件上传,大家一定要下载看看啊
Struts2多个文件上传 多个文件上传分为List集合和数组,下面我们着重介绍一下list集合的上传。都大同小异。
Struts2.0 文件上传与下载全解析Struts2.0 文件上传与下载全解析
基于Struts2实现头像或文件上传,基于Struts2实现头像或文件上传,基于Struts2实现头像或文件上传
Struts1的fileupload的文件上传