浅析ASP.NET多附件上传的实现

在写这篇文章之前我也在Google上找到了很多有关多附件上传的文章,有用ASP.NET多附件上传实现的,也有用JSP、PHP等其它技术实现的,但基本前提都是事先通过js脚本来动态创建DOM,然后上传的时候在服务端做一下处理,有点类似于163的邮件系统。文件上传需要通过页面的POST方法进行提交,这个我在一次MOSS开发中iFrame表单提交的古怪问题解决一问中已经阐述过,其中包括了如何使用页面隐藏的iFrame来提交表单从而避免整个页面提交到服务器而导致页面的刷新。多附件上传的原理与之类似,只不过需要事先通过脚本在页面上动态创建多个input type='file'的标签,当然,如果要想功能更加完美,你可能还需要通过脚本动态添加一些按钮事件以让用户可以删除他所添加的文件。下面是ASP.NET多附件上传的实现

其中红色方框内的内容是通过脚本在页面上动态创建的,将用户在客户端所选文件的文件名动态添加到一个div里,同时在这个div中放一个隐藏的input type=’file’的标签,它的value为用户所选文件的路径,然后在div中放置一个img,添加onmouseover和onmouseout 事件为图片增加了一些鼠标滑动时的效果,onclick事件用来响应用户点击img时删除对应的文件。看一下ASP.NET多附件上传的代码。

 
 
 
  1. <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind=
    "Default.aspx.cs"Inherits="WebApplication1._Default"%> 
  2.  
  3. //EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  4. <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml"> 
  5. <headrunatheadrunat="server"> 
  6. title></font></strong> </li> <li><strong><font><</font></strong><font>scriptsrc</font><strong><font>scriptsrc</font></strong>="MultiAffix.js"<font>type</font>="text/javascript"<strong><font>> script></font></strong> </li> <li><strong><font><</font></strong><font>scripttype</font><strong><font>scripttype</font></strong>=<font>"text/javascript"</font><strong><font>></font></strong> </li> <li><font>varcontrolName</font>=<font>1</font>;//Thisvariableisforthedynamicfilecontrols'sname.  </li> <li> </li> <li>functionaddImg(targetElement,savestatsElement,oldimgElement){  </li> <li><font>varbrowseimgElement</font>=$get("browseimg");  </li> <li><font>vararr</font>=<font>browseimgElement</font>.getElementsByTagName('input');  </li> <li>if(<font>arr.length</font>==0||arr[0]<font>.value.length</font>==0){  </li> <li> </li> <li>alert('Nofileinputs.');  </li> <li>return;  </li> <li>}  </li> <li><font>varoldbrowser</font>=<font>arr</font>[0];  </li> <li><font>varfilename</font>=<font>getfilename</font>(oldbrowser.value);  </li> <li>if(!validateimgtype(oldbrowser.value))return;  </li> <li>if(!validateimgcount(targetElement,3))return;  </li> <li><font>varimgtitles</font>=<font>savestatsElement</font>.value+oldimgElement.value;  </li> <li>if(validateimgexist(filename,imgtitles))<br>{alert('Youhavealreadyaddedthisimage!');return;}  </li> <li>if(oldbrowser!=undefined){  </li> <li><font>varnewbrowser</font>=<font>oldbrowser</font>.cloneNode(true);  </li> <li><font>newbrowser.value</font>=<font>''</font>;  </li> <li><font>varnewfile</font>=<font>document</font>.createElement('div');  </li> <li><font>newfile.innerHTML</font>=<font>filename</font>+'  ';  </li> <li> </li> <li>//Createabuttonelementfordeletetheimage.  </li> <li><font>varnewfileimgbutton</font>=<font>document</font>.createElement('img');  </li> <li><font>newfileimgbutton.src</font>=<font>'ShoutOut_Close.gif'</font>;  </li> <li><font>newfileimgbutton.alt</font>=<font>'Delete'</font>;  </li> <li><font>newfileimgbutton.onclick</font>=<font>function</font>(){  </li> <li>this.parentNode.parentNode.removeChild(this.parentNode);  </li> <li><font>savestatsElement.value</font>=<font>updatehiddenimgs</font>(filename,savestatsElement.value);  </li> <li>}  </li> <li><font>newfileimgbutton.onmouseover</font>=<font>function</font>(){  </li> <li><font>this.src</font>=<font>'ShoutOut_Close_rollover.gif'</font>;  </li> <li>}  </li> <li><font>newfileimgbutton.onmouseout</font>=<font>function</font>(){  </li> <li><font>this.src</font>=<font>'ShoutOut_Close.gif'</font>;  </li> <li>}  </li> <li> </li> <li>browseimgElement.replaceChild(newbrowser,oldbrowser);  </li> <li><font>oldbrowser.name</font>=++controlName;  </li> <li><font>oldbrowser.style.display</font>=<font>'none'</font>;  </li> <li>newfile.appendChild(oldbrowser);  </li> <li> </li> <li>newfile.appendChild(newfileimgbutton);  </li> <li>targetElement.appendChild(newfile);  </li> <li> </li> <li>$get("chkAgree")<font>.checked</font>=<font>false</font>;  </li> <li>$get("btAdd")<font>.disabled</font>=<font>true</font>;  </li> <li>savestatsElement.value+=filename+'|';  </li> <li>}  </li> <li>}  </li> <li><strong><font> script></font></strong> </li> <li> </li> <li><strong><font> head></font></strong> </li> <li><strong><font><body></font></strong> </li> <li><strong><font><</font></strong><font>formid</font><strong><font>formid</font></strong>="form1"<font>runat</font>="server"<strong><font>></font></strong> </li> <li><strong><font><</font></strong><font>asp:ScriptManagerID</font><strong><font>asp:ScriptManagerID</font></strong>="ScriptManager1"<font>runat</font>="server"<strong><font>></font></strong> </li> <li><strong><font> asp:ScriptManager></font></strong> </li> <li><strong><font><div></font></strong> </li> <li><strong><font><div></font></strong> </li> <li>Description:  </li> <li><strong><font><</font></strong><font>asp:TextBoxID</font><strong><font>asp:TextBoxID</font></strong>="tbDescription"<font>MaxLength</font>="2000"<font>runat</font>=<br>"server"<font>TextMode</font>="MultiLine"<strong><font>> asp:TextBox></font></strong> </li> <li><strong><font> div></font></strong> </li> <li><strong><font><div></font></strong> </li> <li>Location:  </li> <li><strong><font><</font></strong><font>asp:DropDownListID</font><strong><font>asp:DropDownListID</font></strong>="ddlLocation"<font>runat</font>="server"<strong><font>></font></strong> </li> <li><strong><font> asp:DropDownList></font></strong> </li> <li><strong><font> div></font></strong> </li> <li><strong><font><div></font></strong> </li> <li>DisplayPostedByUser:  </li> <li><strong><font><</font></strong><font>asp:CheckBoxID</font><strong><font>asp:CheckBoxID</font></strong>="chkPostedByUser"<font>Checked</font>="true"<font>runat</font>=<font>"server"</font><strong><font>/></font></strong> </li> <li><strong><font> div></font></strong> </li> <li><strong><font><div></font></strong> </li> <li>NotifyShoutoutUser:  </li> <li><strong><font><</font></strong><font>asp:CheckBoxID</font><strong><font>asp:CheckBoxID</font></strong>="chkNotifyUser"<font>runat</font>="server"<strong><font>/></font></strong> </li> <li><strong><font> div></font></strong> </li> <li><strong><font><div></font></strong> </li> <li>NotifyShoutouttoEmail:  </li> <li><strong><font><</font></strong><font>asp:TextBoxID</font><strong><font>asp:TextBoxID</font></strong>="tbShoutoutToEmail"<br><font>MaxLength</font>="25"<font>runat</font>=<font>"server"</font><strong><font>> asp:TextBox></font></strong> </li> <li><strong><font> div></font></strong> </li> <li><strong><font><div></font></strong> </li> <li>Images:  </li> <li><strong><font><</font></strong><font>divid</font><strong><font>divid</font></strong>="saveshoutoutimgs"<font>runat</font>="server"<strong><font>></font></strong> </li> <li><strong><font> div></font></strong> </li> <li><strong><font><</font></strong><font>inputid</font><strong><font>inputid</font></strong>="btAddImage"<font>type</font>="button"<font>onclick</font>=<font>"$get('saveshoutoutaddimgs').<br>style.display='block';this.disabled=true;"</font> </li> <li><font>value</font>=<font>"ClickheretoAddImage"</font><strong><font>/></font></strong> </li> <li><strong><font> div></font></strong> </li> <li><strong><font><</font></strong><font>divid</font><strong><font>divid</font></strong>=<font>"saveshoutoutdetailshowimg"</font><strong><font>></font></strong> </li> <li><strong><font><</font></strong><font>divid</font><strong><font>divid</font></strong>="saveshoutoutaddimgs"<font>style</font>="display:none;"<strong><font>></font></strong> </li> <li><strong><font><div></font></strong> </li> <li>AddImage:<strong><font> div></font></strong> </li> <li><strong><font><</font></strong><font>divid</font><strong><font>divid</font></strong>=<font>"browseimg"</font><strong><font>></font></strong> </li> <li><strong><font><</font></strong><font>inputtype</font><strong><font>inputtype</font></strong>=<font>"file"</font><strong><font>/></font></strong> </li> <li><strong><font> div></font></strong> </li> <li><strong><font><div></font></strong> </li> <li>Sizelimitoftheimagesis100kb.HieghtandWidthoftheimagesshouldnotexceed  </li> <li>200px.<strong><font> div></font></strong> </li> <li><strong><font><div></font></strong> </li> <li><strong><font><</font></strong><font>inputid</font><strong><font>inputid</font></strong>="chkAgree"<font>type</font>="checkbox"<font>onclick</font>=<font>"$get('btAdd').<br>disabled=!this.checked;"</font><strong><font>/></font></strong>I  </li> <li>agree.legalsignofftexttobedefined.  </li> <li><strong><font> div></font></strong> </li> <li><strong><font><div></font></strong> </li> <li><strong><font><</font></strong><font>inputid</font><strong><font>inputid</font></strong>="btAdd"<font>disabled</font>="disabled"<font>type</font>="button"<font>value</font>="Add"<font>runat</font>=<font>"server"</font><strong><font>/></font></strong> </li> <li><strong><font> div></font></strong> </li> <li><strong><font> div></font></strong> </li> <li><strong><font> div></font></strong> </li> <li><strong><font> div></font></strong> </li> <li><strong><font><</font></strong><font>asp:TextBoxID</font><strong><font>asp:TextBoxID</font></strong>="tbImgs"<font>runat</font>="server"<font>Text</font>="|"<font>Style</font>=<br>"display:none;"<strong><font>> asp:TextBox></font></strong> </li> <li><strong><font><</font></strong><font>asp:TextBoxID</font><strong><font>asp:TextBoxID</font></strong>="tbOldImgs"<font>runat</font>="server"<font>Text</font>="|"<font>Style</font>=<br>"display:none;"<strong><font>> asp:TextBox></font></strong> </li> <li><strong><font> form></font></strong> </li> <li><strong><font> body></font></strong> </li> <li><strong><font> html></font></strong> </li> </ol></pre><p>【编辑推荐】</p> <ol> <li><font>ASP.NET插件的实现方式</font></li> <li><font>概述ASP.NET应用程序</font></li> <li><font>浅谈ASP.NET 2.0数据绑定</font></li> <li><font>ASP.NET阻止Java Script注入式攻击</font></li> <li><font>ASP.NET MVC使用T4</font></li> </ol> <br> 分享名称:浅析ASP.NET多附件上传的实现 <br> 文章链接:<a href="http://www.jxruijie.cn/article/cdcdjdd.html">http://www.jxruijie.cn/article/cdcdjdd.html</a> </div> </div> <div class="contentr fr"> <h3>其他资讯</h3> <ul> <li> <a href="/article/cccgpep.html">主机和交换机用什么线连好?</a> </li><li> <a href="/article/cccgppp.html">织梦cms能做商城吗「织梦cms可以商用吗」</a> </li><li> <a href="/article/cccgpps.html">深入理解:Linux调试原理及方法(linux调试原理)</a> </li><li> <a href="/article/cccgphi.html">为什么平板wps闪退</a> </li><li> <a href="/article/cccgphs.html">windows10的分辨率低?(windows10分辨率低怎么办)</a> </li> </ul> </div> </div> </div> <!--底部--> <footer> <div class="foot"> <div class="container"> <h1>广皓图文建站您身边的网站建设服务商</h1> <div class="foot1"> <ul> <li> <dl><i class="iconfont"></i><b>地址ADDRESS</b></dl> <p>四川-成都青羊区太升南路288号<br> 锦天国际A座10楼 </p> </li> <li> <dl><i class="iconfont"></i><b>电话/TEL</b></dl> <p><a href="tel:02886922220" target="_blank">028 86922220</a> (工作日)<br> <a href="tel:18980820575" target="_blank">1898082 0575</a> ( 7x24 ) </p> </li> <li> <dl><i class="iconfont"></i><b>QQ咨询</b></dl> <p> 244261566 (售前)<br> 631063699 (售后) </p> </li> <li> <dl><i class="iconfont"></i><b>邮箱/E: mail</b></dl> <p> service@cdcxhl.com (业务)<br> hr@cdcxhl.com (求职) </p> </li> </ul> </div> <div class="link"> 友情链接: <a href="http://www.hkdkfx.com/" title="成都实验室超纯水机" target="_blank">成都实验室超纯水机</a>   <a href="https://www.cdcxhl.com/sosuo.html" title="关键词排名" target="_blank">关键词排名</a>   <a href="http://m.cdcxhl.cn/shop/ " title="成都商城网站建设" target="_blank">成都商城网站建设</a>   <a href="http://www.mhhdkuw.com/" title="乐山奔驰发电机" target="_blank">乐山奔驰发电机</a>   <a href="http://www.xzjierui.cn/" title="眉山网站建设" target="_blank">眉山网站建设</a>   <a href="https://www.cdxwcx.com/wangzhan/mbshangcheng.html" title="商城网站" target="_blank">商城网站</a>   <a href="http://www.cdfuwuqi.com/host/mianbeian/" title="免备案虚拟主机" target="_blank">免备案虚拟主机</a>   <a href="http://www.nbjierui.cn/" title="边坡防护网厂家" target="_blank">边坡防护网厂家</a>   <a href="http://www.zzjierui.cn/" title="广安网站建设" target="_blank">广安网站建设</a>   <a href="https://www.cdxwcx.com/wangzhan/case/dfjg.html" title="东电技改" target="_blank">东电技改</a>    </div> </div> </div> <div class="copy container"> Copyright © 2025 All Rights Reserved. 青羊区广皓图文设计工作室(个体工商户) 版权所有 <a href="http://www.beian.miit.gov.cn/" target="_blank" rel="nofollow">蜀ICP备2025118593号-7</a> [原创设计,独立版权。未经许可.不得拷贝或镜像]<br> <a href="http://www.kswsj.cn/" target="_blank">网站营销推广</a> | <a href="https://www.cdcxhl.com/pinpai.html" target="_blank">品牌网站设计</a> | <a href="http://www.cdweb.net/" target="_blank">自适应网站建设</a> | <a href="http://cdkjz.cn/wangzhan/pinpai/" target="_blank">品牌网站建设</a> | <a href="http://chengdu.cdxwcx.cn/" target="_blank">成都网站制作</a> | <a href="https://www.cdcxhl.com/cloud/" target="_blank">云服务器</a> | <a href="https://www.cdcxhl.com/weihu/abazhou.html" target="_blank">自贡网站维护</a> | (自贡网站建设QQ : 631063699 )</div> </footer> <!--在线咨询--> <div class="fot"> <ul> <li> <a href="mqqwpa://im/chat?chat_type=wpa&uin=532337155&version=1&src_type=web&web_src=oicqzone.com" target="_blank"> <img src="/Public/Home/img/fot1.png" alt="建站咨询"> <p>在线咨询</p> </a> </li> <li> <a href="tel:18980820575" target="_blank"> <img src="/Public/Home/img/fot2.png" alt="建站电话"> <p>拨打电话</p> </a> </li> </ul> </div> </body> </html> <script> $(".con img").each(function(){ var src = $(this).attr("src"); //获取图片地址 var str=new RegExp("http"); var result=str.test(src); if(result==false){ var url = "https://www.cdcxhl.com"+src; //绝对路径 $(this).attr("src",url); } }); window.onload=function(){ document.oncontextmenu=function(){ return false; } } </script>