我想做一个表单,表单的内容是一张表格,表格里面可以传文件,而且最多传5个文件,初始时只有一个文件上传行,通过一个按钮调用JavaScript来动态生成更多的行,每行中包含一个<input type="text">和一个text文本框来记录该文件下载时显示的超链接内容,这个text文本的内容存入数据库表中,开始的text名称是file1,后面的几个依次是file2,file3等,但是每次我都只能获取到file的文本框的值,不知道为什么。
JavaScript代码如下:
<script type="text/javascript">
function addRows()
{
//应该插入的行号
lineIndex = document.getElementById("insert_position").value; //上传文件名的文本框名
numOfFile = document.getElementById("file_index").value;
//文件名索引值递增
++numOfFile; if(numOfFile<=5)
{ //插入文件上传行
var newLine = upload.insertRow(lineIndex);
var newCol1 = newLine.insertCell();
var newCol2 = newLine.insertCell();
var newCol3 = newLine.insertCell();
var newCol4 = newLine.insertCell();
newCol1.innerHTML = "<div align=\"center\"><p><small><font face=\"Verdana\">上传文件:</font>"+
"</small></p></div>";
newCol2.innerHTML = "<input type=\"file\" name=\"file1\" size=\"30\"/>";
newCol3.innerHTML = "<div align=\"center\"><p><small><font face=\"Verdana\">文件名:</font>"+
"</small></p></div>";
newCol4.innerHTML = "<small><font face=\"Verdana\">"+
"<input type=\"hidden\" size=0 name=\"file_index\" id=\"file_index\" value=\"<%=numOfFile%>\">"+
"<%if(numOfFile==1){%>"+
"<input type=text size=14 name=file1>"+
"<%}else if(numOfFile==2){%>"+
"<input type=text size=14 name=file2>"+
"<%}else if(numOfFile==3){%>"+
"<input type=text size=14 name=file3>"+
"<%}else if(numOfFile==4){%>"+
"<input type=text size=14 name=file4>"+
"<%}else if(numOfFile==5){%>"+
"<input type=text size=14 name=file5>"+
"<%}%><br></font></small>"; document.getElementById("insert_position").value = ++lineIndex; document.getElementById("file_index").value = numOfFile; alert(lineIndex+" "+numOfFile);
}
else{
alert("上传文件数量超过不能超过5个");
}
}
</script>
表单中对应的JSP代码如下:
<form method="post" action="uploadFile.jsp" name="fileUpload" enctype="multipart/form-data">
<tr>
<td><div align="center"><p><small><font face="Verdana">上传文件:</font></small></p></div></td>
<td><input type="file" name="file1" size="30"/></td>
<td><div align="center"><p><small><font face="Verdana">文件名:</font></small></p></div></td>
<td width="120"><small><font face="Verdana">
<input type="hidden" size="0" name="file_index" id="file_index" value="<%=numOfFile%>">
<%if(numOfFile==1){%>
<input type=text size=14 name="file1">
<%}else if(numOfFile==2){%>
<input type=text size=14 name="file2">
<%}else if(numOfFile==3){%>
<input type=text size=14 name="file3">
<%}else if(numOfFile==4){%>
<input type=text size=14 name="file4">
<%}else if(numOfFile==5){%>
<input type=text size=14 name="file5">
<%}%>
<br></font></small></td>
</tr>
uploadFile.jsp文件的部分代码如下:
<%
//新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
//上传初始化
su.initialize(pageContext);
//设定允许上传的文件类型
su.setAllowedFilesList("txt,doc,docx");
//上传文件
su.upload();
//将上传文件全部保存到指定的目录
int count = su.save("D:/MyEclipse/项目/scu_exchange_project");
%>
<%
//获取上传新闻的日期
Date nowTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(nowTime);
//获取上传的新闻的标题
String newsTitle = su.getRequest().getParameter("newsTitle");
//获取上传的新闻ID号
String newsID = su.getRequest().getParameter("newsId");
//获取上传的新闻内容
String newsContent = su.getRequest().getParameter("newsContent");
//获取上传的文件名
String uploadFileNames = "";
for(int i=1;i<=su.getFiles().getCount();i++)
{
uploadFileNames += su.getRequest().getParameter("file"+i)+" ";
}
String[] args = {dateString,newsTitle,newsContent,newsID,uploadFileNames};
//向数据库中插入新闻信息
addNews.update("insert into news values('"+dateString+"','"+newsTitle+"','"+newsContent+"','"+newsID+"','"+uploadFileNames+"')");
%>
最后数据库中的结果老是:file1输入框中内容能够获取到,file2,file3等都是null, 求高手帮忙啊,这问题我纠结了快一天了,好悲剧啊!
JavaScript代码如下:
<script type="text/javascript">
function addRows()
{
//应该插入的行号
lineIndex = document.getElementById("insert_position").value; //上传文件名的文本框名
numOfFile = document.getElementById("file_index").value;
//文件名索引值递增
++numOfFile; if(numOfFile<=5)
{ //插入文件上传行
var newLine = upload.insertRow(lineIndex);
var newCol1 = newLine.insertCell();
var newCol2 = newLine.insertCell();
var newCol3 = newLine.insertCell();
var newCol4 = newLine.insertCell();
newCol1.innerHTML = "<div align=\"center\"><p><small><font face=\"Verdana\">上传文件:</font>"+
"</small></p></div>";
newCol2.innerHTML = "<input type=\"file\" name=\"file1\" size=\"30\"/>";
newCol3.innerHTML = "<div align=\"center\"><p><small><font face=\"Verdana\">文件名:</font>"+
"</small></p></div>";
newCol4.innerHTML = "<small><font face=\"Verdana\">"+
"<input type=\"hidden\" size=0 name=\"file_index\" id=\"file_index\" value=\"<%=numOfFile%>\">"+
"<%if(numOfFile==1){%>"+
"<input type=text size=14 name=file1>"+
"<%}else if(numOfFile==2){%>"+
"<input type=text size=14 name=file2>"+
"<%}else if(numOfFile==3){%>"+
"<input type=text size=14 name=file3>"+
"<%}else if(numOfFile==4){%>"+
"<input type=text size=14 name=file4>"+
"<%}else if(numOfFile==5){%>"+
"<input type=text size=14 name=file5>"+
"<%}%><br></font></small>"; document.getElementById("insert_position").value = ++lineIndex; document.getElementById("file_index").value = numOfFile; alert(lineIndex+" "+numOfFile);
}
else{
alert("上传文件数量超过不能超过5个");
}
}
</script>
表单中对应的JSP代码如下:
<form method="post" action="uploadFile.jsp" name="fileUpload" enctype="multipart/form-data">
<tr>
<td><div align="center"><p><small><font face="Verdana">上传文件:</font></small></p></div></td>
<td><input type="file" name="file1" size="30"/></td>
<td><div align="center"><p><small><font face="Verdana">文件名:</font></small></p></div></td>
<td width="120"><small><font face="Verdana">
<input type="hidden" size="0" name="file_index" id="file_index" value="<%=numOfFile%>">
<%if(numOfFile==1){%>
<input type=text size=14 name="file1">
<%}else if(numOfFile==2){%>
<input type=text size=14 name="file2">
<%}else if(numOfFile==3){%>
<input type=text size=14 name="file3">
<%}else if(numOfFile==4){%>
<input type=text size=14 name="file4">
<%}else if(numOfFile==5){%>
<input type=text size=14 name="file5">
<%}%>
<br></font></small></td>
</tr>
uploadFile.jsp文件的部分代码如下:
<%
//新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
//上传初始化
su.initialize(pageContext);
//设定允许上传的文件类型
su.setAllowedFilesList("txt,doc,docx");
//上传文件
su.upload();
//将上传文件全部保存到指定的目录
int count = su.save("D:/MyEclipse/项目/scu_exchange_project");
%>
<%
//获取上传新闻的日期
Date nowTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(nowTime);
//获取上传的新闻的标题
String newsTitle = su.getRequest().getParameter("newsTitle");
//获取上传的新闻ID号
String newsID = su.getRequest().getParameter("newsId");
//获取上传的新闻内容
String newsContent = su.getRequest().getParameter("newsContent");
//获取上传的文件名
String uploadFileNames = "";
for(int i=1;i<=su.getFiles().getCount();i++)
{
uploadFileNames += su.getRequest().getParameter("file"+i)+" ";
}
String[] args = {dateString,newsTitle,newsContent,newsID,uploadFileNames};
//向数据库中插入新闻信息
addNews.update("insert into news values('"+dateString+"','"+newsTitle+"','"+newsContent+"','"+newsID+"','"+uploadFileNames+"')");
%>
最后数据库中的结果老是:file1输入框中内容能够获取到,file2,file3等都是null, 求高手帮忙啊,这问题我纠结了快一天了,好悲剧啊!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货