【提问】asp.net多文件上传 RT记得坛子里有这样的帖子的可是找不到了哪位找一篇比较好的出来是把路径再放到数据库的那种。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <script type="text/javascript"> var i=1 function addFile() { if (i<8) {var str = '<BR> <input type="file" name="File" runat="server" style="width: 200px"/>描述:<input name="text" type="text" style="width: 150px" maxlength="20" />' document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str) } else { alert("您一次最多只能上传8张图片!") } i++ } </script> insertAdjacentHTML这什么函数呢? 这个例子中添加的是html服务器上传控件。可否添加asp.net服务器控件。 你看看 老大孟子e章的吧。 写的还不错http://dotnet.aspx.cc/article/58ea3515-36f2-4fd9-ac89-eaf49f59816c/read.aspx http://topic.csdn.net/u/20091031/17/d1ebbf7e-46d4-4d08-acc4-f751494877cb.html我以前弄有一个是用ftp的 insertAdjacentHTML看名称也能猜到的insertAdjacentHTML这个是 DOM 元素的 一个方法功能是:在调用该方法的DOM 元素 所指定的位置 添加 html 代码 所指定的位置 就是第一个参数 首先 asp.net服务器控件 最终还是要转化成 html 控件 ,只是包装一下。其次 你是在用 js 做操作, 只能操作 dom 元素, 也就是 html 控件 这个又没想到了fileupload服务器控件到客户端会变成input type=file这种? 所指定的位置 就是第一个参数---------------------------有四个可选值,分别相对 元素的开始标记 和结束标记它们是 1. beforeBegin: 插入到标签开始前2. afterBegin:插入到标签开始标记之后3. beforeEnd:插入到标签结束标记前4. afterEnd:插入到标签结束标记后 <script type="text/javascript"> function AddFile() { var strFile=" <input name=\"upload_file\" type='file' class='inputText' style='WIDTH:350px;'/> <br/>"; document.getElementById("td_uploadFile").insertAdjacentHTML("beforeEnd",strFile); } </script> <input id="BtnAddFile" type="button" class="inputButton" value="增加附件" onclick="javascript:AddFile()" /> <td id="td_uploadFile" align="center"> <input id="upload_file" name="upload_Attachment" type="file" class="inputText" style="width: 350px; display:none;" runat="server" /> </td> HttpFileCollection Files = HttpContext.Current.Request.Files; for (int i = 0; i < Files.Count; i++) { HttpPostedFile PostedFile = Files[i]; if (PostedFile.ContentLength > 0) {} } http://topic.csdn.net/u/20091123/09/1983e0e3-6019-4ba3-b39c-73d514fc4196.html 非哥,比如现在我已经有很多个input type=file但是现在呢。我可能需要一个重置按钮回到页面第一次加载时候默认只有 一个file控件 可是这些控件都是html服务器控件。并且点重置的时候也不清楚到底有多少个。这该咋写呢? 你可以给 新增的 file 设置标示eg:<input type="file" add="y" name="File" runat="server" style="width: 200px"/>add="y"然后在重置的时候 判断 指定容器内的 全部 file ,是否 add 属性 是否等于 y是的话 删除-------------------------------也可以在第一次加载的时候 在隐藏的容器内 保存 原始file 的副本然后在重置的时候 获取隐藏容器的 innerHTML 即可有一点忘了说了 insertAdjacentHTML 不兼容 ff 非哥,我明白你的意思了。除了默认第一个file没有add属性其他的都有重置的时候把这些控件全部给清除就是可是这清除不会写。能给下代码吗?判断file控件是否有add属性然后再清空html 来拿分的 <html xmlns="http://www.w3.org/1999/xhtml" ><head id="Head1" runat="server"> <title></title> <base target="_self"></base> <script language="JavaScript"> function addFile() { var str = '<INPUT type="file" size="50" NAME="File">'; document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str); } function delFile() { //document } </script></head><body> <form id="form1" method="post" runat="server" enctype="multipart/form-data"> <div align="center"> <br /> <h3>多图片上传</h3> <p style="text-align:center;color:Red;">请上传jpg和gif文件</p> <P id="MyFile"><INPUT type="file" size="50" NAME="File"></P> <P> <input type="button" value="增加(Add)" onclick="addFile()"> <input onclick="this.form.reset()" type="button" value="重置(ReSet)"> <asp:Button Runat="server" Text="开始上传" ID="UploadButton" OnClick="UploadButton_Click"></asp:Button> </P> <P> <asp:Label id="strStatus" runat="server" Font-Names="宋体" Font-Bold="True" Font-Size="9pt" Width="500px" BorderStyle="None" BorderColor="White"></asp:Label> </P> </div> </form></body></html> HttpFileCollection files = HttpContext.Current.Request.Files; /// '状态信息 System.Text.StringBuilder strMsg = new System.Text.StringBuilder(); strMsg.Append("上传的文件分别是:<hr color=red>"); try { string timePath = String.Format("{0}/{1}", DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HH")); //string userFilePath = String.Format("{0}/", timePath); System.IO.Directory.CreateDirectory(System.Web.HttpContext.Current.Request.MapPath("../../upload/") + timePath); for (int iFile = 0; iFile < files.Count; iFile++) { ///'检查文件扩展名字 HttpPostedFile postedFile = files[iFile]; string fileName, fileExtension; fileName = System.IO.Path.GetFileName(postedFile.FileName); if (fileName != "") { fileExtension = System.IO.Path.GetExtension(fileName); if (fileExtension.ToUpper() == ".JPG" || fileExtension.ToUpper() == ".GIF") { } else { return false; } strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString() + "<br>"); strMsg.Append("客户端文件地址:" + postedFile.FileName + "<br>"); strMsg.Append("上传文件的文件名:" + fileName + "<br>"); strMsg.Append("上传文件的扩展名:" + fileExtension + "<br><hr>"); ///'可根据扩展名字的不同保存到不同的文件夹 ///注意:可能要修改你的文件夹的匿名写入权限。 /// postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("../../upload/" + timePath + "/") + fileName); SaveInfo("../../upload/" + timePath + "/", fileName); //循环保存数据 } } strStatus.Text = strMsg.ToString(); return true; } catch (System.Exception Ex) { strStatus.Text = Ex.Message; return false; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""><script type="text/javascript"> function addFile() { var str = '<div add="y" ><input type="file" name="File" style="width: 200px"/>描述: <input name="text" type="text" style="width: 150px" maxlength="20" /></div>' document.getElementById('div').insertAdjacentHTML("beforeEnd",str) } function resetFile() { var div =document.getElementById('div'); var childDiv=div.getElementsByTagName("div"); for(var i=childDiv.length-1;i>-1;i--) { if(childDiv[i].add&&childDiv[i].add=='y') { div.removeChild(childDiv[i]); } } } </script> </HEAD> <BODY> <div id='div'>默认File1 <input type="file" name="File" style="width: 200px" /><div>默认File2 <input type="file" name="File" style="width: 200px" /></div> </div> <input type='button' value='add' onclick='addFile();' /> <input type='button' value='reset' onclick='resetFile();' /> </BODY></HTML> http://blog.csdn.net/chenguang79/archive/2008/10/24/3129760.aspx这是以前我写一个方法,不知道对你有没有帮助 removechild这方法就OK了。 我有flash+asp.net上传的例子QQ81504036 怎么让gridview中的超链接失效? vs2010使用不了自带的ajax控件 怎么设定GridView导出EXECL字体的大小 textbox限制email input button 回传的问题 (总结)关于在线人数统计中 浏览器关闭事件的判断 请教asp.net2003不能使用Debug,不知道该怎么设置? 如何编译WebForm1.aspx.cs文件? 在线 出現錯誤信息"因為保護層級,無法存取 'System.Web.UI.WebControls.TableRow.cells'"如何處理? 看看我这个属于哪个三层结构 请求Web页面,时间设置问题
var i=1
function addFile()
{
if (i<8)
{var str = '<BR> <input type="file" name="File" runat="server" style="width: 200px"/>描述:<input name="text" type="text" style="width: 150px" maxlength="20" />'
document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)
}
else
{
alert("您一次最多只能上传8张图片!")
}
i++
}
</script>
这什么函数呢?
可否添加asp.net服务器控件。
http://dotnet.aspx.cc/article/58ea3515-36f2-4fd9-ac89-eaf49f59816c/read.aspx
我以前弄有一个是用ftp的
首先 asp.net服务器控件 最终还是要转化成 html 控件 ,只是包装一下。其次 你是在用 js 做操作, 只能操作 dom 元素, 也就是 html 控件
fileupload服务器控件到客户端会变成
input type=file这种?
---------------------------有四个可选值,分别相对 元素的开始标记 和结束标记它们是 1. beforeBegin: 插入到标签开始前2. afterBegin:插入到标签开始标记之后3. beforeEnd:插入到标签结束标记前4. afterEnd:插入到标签结束标记后
function AddFile()
{
var strFile=" <input name=\"upload_file\" type='file' class='inputText' style='WIDTH:350px;'/> <br/>";
document.getElementById("td_uploadFile").insertAdjacentHTML("beforeEnd",strFile);
}
</script>
<input id="BtnAddFile" type="button" class="inputButton" value="增加附件" onclick="javascript:AddFile()" /> <td id="td_uploadFile" align="center">
<input id="upload_file" name="upload_Attachment" type="file" class="inputText"
style="width: 350px; display:none;" runat="server" />
</td>
HttpFileCollection Files = HttpContext.Current.Request.Files;
for (int i = 0; i < Files.Count; i++)
{ HttpPostedFile PostedFile = Files[i];
if (PostedFile.ContentLength > 0)
{}
}
http://topic.csdn.net/u/20091123/09/1983e0e3-6019-4ba3-b39c-73d514fc4196.html
但是现在呢。我可能需要一个重置按钮回到页面第一次加载时候默认只有 一个file控件
可是这些控件都是html服务器控件。
并且点重置的时候也不清楚到底有多少个。
这该咋写呢?
-------------------------------
也可以在第一次加载的时候 在隐藏的容器内 保存 原始file 的副本然后在重置的时候 获取隐藏容器的 innerHTML 即可
有一点忘了说了 insertAdjacentHTML 不兼容 ff
除了默认第一个file没有add属性
其他的都有
重置的时候把这些控件全部给清除就是
可是这清除不会写。
能给下代码吗?
判断file控件是否有add属性
然后再清空html
<head id="Head1" runat="server">
<title></title>
<base target="_self"></base>
<script language="JavaScript">
function addFile()
{
var str = '<INPUT type="file" size="50" NAME="File">';
document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str);
}
function delFile()
{
//document
}
</script>
</head>
<body>
<form id="form1" method="post" runat="server" enctype="multipart/form-data">
<div align="center">
<br /> <h3>多图片上传</h3>
<p style="text-align:center;color:Red;">请上传jpg和gif文件</p>
<P id="MyFile"><INPUT type="file" size="50" NAME="File"></P>
<P>
<input type="button" value="增加(Add)" onclick="addFile()">
<input onclick="this.form.reset()" type="button" value="重置(ReSet)">
<asp:Button Runat="server" Text="开始上传" ID="UploadButton" OnClick="UploadButton_Click"></asp:Button>
</P>
<P>
<asp:Label id="strStatus" runat="server" Font-Names="宋体" Font-Bold="True" Font-Size="9pt"
Width="500px" BorderStyle="None" BorderColor="White"></asp:Label>
</P>
</div>
</form>
</body>
</html>
System.Text.StringBuilder strMsg = new System.Text.StringBuilder();
strMsg.Append("上传的文件分别是:<hr color=red>");
try
{
string timePath = String.Format("{0}/{1}", DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HH"));
//string userFilePath = String.Format("{0}/", timePath);
System.IO.Directory.CreateDirectory(System.Web.HttpContext.Current.Request.MapPath("../../upload/") + timePath);
for (int iFile = 0; iFile < files.Count; iFile++)
{
///'检查文件扩展名字
HttpPostedFile postedFile = files[iFile];
string fileName, fileExtension;
fileName = System.IO.Path.GetFileName(postedFile.FileName);
if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName); if (fileExtension.ToUpper() == ".JPG" || fileExtension.ToUpper() == ".GIF")
{ }
else
{
return false;
} strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString() + "<br>");
strMsg.Append("客户端文件地址:" + postedFile.FileName + "<br>");
strMsg.Append("上传文件的文件名:" + fileName + "<br>");
strMsg.Append("上传文件的扩展名:" + fileExtension + "<br><hr>");
///'可根据扩展名字的不同保存到不同的文件夹
///注意:可能要修改你的文件夹的匿名写入权限。
/// postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("../../upload/" + timePath + "/") + fileName);
SaveInfo("../../upload/" + timePath + "/", fileName);
//循环保存数据 }
}
strStatus.Text = strMsg.ToString();
return true;
}
catch (System.Exception Ex)
{
strStatus.Text = Ex.Message;
return false;
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT=""><script type="text/javascript"> function addFile()
{
var str = '<div add="y" ><input type="file" name="File" style="width: 200px"/>描述: <input name="text" type="text" style="width: 150px" maxlength="20" /></div>'
document.getElementById('div').insertAdjacentHTML("beforeEnd",str)
}
function resetFile()
{
var div =document.getElementById('div');
var childDiv=div.getElementsByTagName("div");
for(var i=childDiv.length-1;i>-1;i--)
{
if(childDiv[i].add&&childDiv[i].add=='y')
{
div.removeChild(childDiv[i]);
}
}
}
</script> </HEAD> <BODY>
<div id='div'>
默认File1 <input type="file" name="File" style="width: 200px" />
<div>
默认File2 <input type="file" name="File" style="width: 200px" />
</div>
</div>
<input type='button' value='add' onclick='addFile();' />
<input type='button' value='reset' onclick='resetFile();' />
</BODY>
</HTML>
这方法就OK了。