浅析ASP.NET多附件上传的实现
创始人
2024-04-19 18:21:00
0

在写这篇文章之前我也在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. </< SPAN>title></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>scriptsrc</FONT><STRONG><FONT color=#006699>scriptsrc</FONT></STRONG>="MultiAffix.js"<FONT color=#0000ff>type</FONT>="text/javascript"<STRONG><FONT color=#006699>></< SPAN>script></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>scripttype</FONT><STRONG><FONT color=#006699>scripttype</FONT></STRONG>=<FONT color=#0000ff>"text/javascript"</FONT><STRONG><FONT color=#006699>></FONT></STRONG> <LI class=alt><FONT color=#ff0000>varcontrolName</FONT>=<FONT color=#0000ff>1</FONT>;//Thisvariableisforthedynamicfilecontrols'sname.  <LI class=""> <LI class=alt>functionaddImg(targetElement,savestatsElement,oldimgElement){  <LI class=""><FONT color=#ff0000>varbrowseimgElement</FONT>=$get("browseimg");  <LI class=alt><FONT color=#ff0000>vararr</FONT>=<FONT color=#0000ff>browseimgElement</FONT>.getElementsByTagName('input');  <LI class="">if(<FONT color=#ff0000>arr.length</FONT>==0||arr[0]<FONT color=#ff0000>.value.length</FONT>==0){  <LI class=alt> <LI class="">alert('Nofileinputs.');  <LI class=alt>return;  <LI class="">}  <LI class=alt><FONT color=#ff0000>varoldbrowser</FONT>=<FONT color=#0000ff>arr</FONT>[0];  <LI class=""><FONT color=#ff0000>varfilename</FONT>=<FONT color=#0000ff>getfilename</FONT>(oldbrowser.value);  <LI class=alt>if(!validateimgtype(oldbrowser.value))return;  <LI class="">if(!validateimgcount(targetElement,3))return;  <LI class=alt><FONT color=#ff0000>varimgtitles</FONT>=<FONT color=#0000ff>savestatsElement</FONT>.value+oldimgElement.value;  <LI class="">if(validateimgexist(filename,imgtitles))<BR>{alert('Youhavealreadyaddedthisimage!');return;}  <LI class=alt>if(oldbrowser!=undefined){  <LI class=""><FONT color=#ff0000>varnewbrowser</FONT>=<FONT color=#0000ff>oldbrowser</FONT>.cloneNode(true);  <LI class=alt><FONT color=#ff0000>newbrowser.value</FONT>=<FONT color=#0000ff>''</FONT>;  <LI class=""><FONT color=#ff0000>varnewfile</FONT>=<FONT color=#0000ff>document</FONT>.createElement('div');  <LI class=alt><FONT color=#ff0000>newfile.innerHTML</FONT>=<FONT color=#0000ff>filename</FONT>+'  ';  <LI class=""> <LI class=alt>//Createabuttonelementfordeletetheimage.  <LI class=""><FONT color=#ff0000>varnewfileimgbutton</FONT>=<FONT color=#0000ff>document</FONT>.createElement('img');  <LI class=alt><FONT color=#ff0000>newfileimgbutton.src</FONT>=<FONT color=#0000ff>'ShoutOut_Close.gif'</FONT>;  <LI class=""><FONT color=#ff0000>newfileimgbutton.alt</FONT>=<FONT color=#0000ff>'Delete'</FONT>;  <LI class=alt><FONT color=#ff0000>newfileimgbutton.onclick</FONT>=<FONT color=#0000ff>function</FONT>(){  <LI class="">this.parentNode.parentNode.removeChild(this.parentNode);  <LI class=alt><FONT color=#ff0000>savestatsElement.value</FONT>=<FONT color=#0000ff>updatehiddenimgs</FONT>(filename,savestatsElement.value);  <LI class="">}  <LI class=alt><FONT color=#ff0000>newfileimgbutton.onmouseover</FONT>=<FONT color=#0000ff>function</FONT>(){  <LI class=""><FONT color=#ff0000>this.src</FONT>=<FONT color=#0000ff>'ShoutOut_Close_rollover.gif'</FONT>;  <LI class=alt>}  <LI class=""><FONT color=#ff0000>newfileimgbutton.onmouseout</FONT>=<FONT color=#0000ff>function</FONT>(){  <LI class=alt><FONT color=#ff0000>this.src</FONT>=<FONT color=#0000ff>'ShoutOut_Close.gif'</FONT>;  <LI class="">}  <LI class=alt> <LI class="">browseimgElement.replaceChild(newbrowser,oldbrowser);  <LI class=alt><FONT color=#ff0000>oldbrowser.name</FONT>=++controlName;  <LI class=""><FONT color=#ff0000>oldbrowser.style.display</FONT>=<FONT color=#0000ff>'none'</FONT>;  <LI class=alt>newfile.appendChild(oldbrowser);  <LI class=""> <LI class=alt>newfile.appendChild(newfileimgbutton);  <LI class="">targetElement.appendChild(newfile);  <LI class=alt> <LI class="">$get("chkAgree")<FONT color=#ff0000>.checked</FONT>=<FONT color=#0000ff>false</FONT>;  <LI class=alt>$get("btAdd")<FONT color=#ff0000>.disabled</FONT>=<FONT color=#0000ff>true</FONT>;  <LI class="">savestatsElement.value+=filename+'|';  <LI class=alt>}  <LI class="">}  <LI class=alt><STRONG><FONT color=#006699></< SPAN>script></FONT></STRONG> <LI class=""> <LI class=alt><STRONG><FONT color=#006699></< SPAN>head></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><body></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>formid</FONT><STRONG><FONT color=#006699>formid</FONT></STRONG>="form1"<FONT color=#0000ff>runat</FONT>="server"<STRONG><FONT color=#006699>></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>asp:ScriptManagerID</FONT><STRONG><FONT color=#006699>asp:ScriptManagerID</FONT></STRONG>="ScriptManager1"<FONT color=#0000ff>runat</FONT>="server"<STRONG><FONT color=#006699>></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699></< SPAN>asp:ScriptManager></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><div></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699><div></FONT></STRONG> <LI class="">Description:  <LI class=alt><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>asp:TextBoxID</FONT><STRONG><FONT color=#006699>asp:TextBoxID</FONT></STRONG>="tbDescription"<FONT color=#0000ff>MaxLength</FONT>="2000"<FONT color=#ff0000>runat</FONT>=<BR>"server"<FONT color=#0000ff>TextMode</FONT>="MultiLine"<STRONG><FONT color=#006699>></< SPAN>asp:TextBox></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699><div></FONT></STRONG> <LI class="">Location:  <LI class=alt><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>asp:DropDownListID</FONT><STRONG><FONT color=#006699>asp:DropDownListID</FONT></STRONG>="ddlLocation"<FONT color=#0000ff>runat</FONT>="server"<STRONG><FONT color=#006699>></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699></< SPAN>asp:DropDownList></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><div></FONT></STRONG> <LI class=alt>DisplayPostedByUser:  <LI class=""><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>asp:CheckBoxID</FONT><STRONG><FONT color=#006699>asp:CheckBoxID</FONT></STRONG>="chkPostedByUser"<FONT color=#0000ff>Checked</FONT>="true"<FONT color=#ff0000>runat</FONT>=<FONT color=#0000ff>"server"</FONT><STRONG><FONT color=#006699>/></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><div></FONT></STRONG> <LI class=alt>NotifyShoutoutUser:  <LI class=""><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>asp:CheckBoxID</FONT><STRONG><FONT color=#006699>asp:CheckBoxID</FONT></STRONG>="chkNotifyUser"<FONT color=#0000ff>runat</FONT>="server"<STRONG><FONT color=#006699>/></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><div></FONT></STRONG> <LI class=alt>NotifyShoutouttoEmail:  <LI class=""><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>asp:TextBoxID</FONT><STRONG><FONT color=#006699>asp:TextBoxID</FONT></STRONG>="tbShoutoutToEmail"<BR><FONT color=#0000ff>MaxLength</FONT>="25"<FONT color=#ff0000>runat</FONT>=<FONT color=#0000ff>"server"</FONT><STRONG><FONT color=#006699>></< SPAN>asp:TextBox></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><div></FONT></STRONG> <LI class=alt>Images:  <LI class=""><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>divid</FONT><STRONG><FONT color=#006699>divid</FONT></STRONG>="saveshoutoutimgs"<FONT color=#0000ff>runat</FONT>="server"<STRONG><FONT color=#006699>></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>inputid</FONT><STRONG><FONT color=#006699>inputid</FONT></STRONG>="btAddImage"<FONT color=#0000ff>type</FONT>="button"<FONT color=#ff0000>onclick</FONT>=<FONT color=#0000ff>"$get('saveshoutoutaddimgs').<BR>style.display='block';this.disabled=true;"</FONT> <LI class=alt><FONT color=#ff0000>value</FONT>=<FONT color=#0000ff>"ClickheretoAddImage"</FONT><STRONG><FONT color=#006699>/></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>divid</FONT><STRONG><FONT color=#006699>divid</FONT></STRONG>=<FONT color=#0000ff>"saveshoutoutdetailshowimg"</FONT><STRONG><FONT color=#006699>></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>divid</FONT><STRONG><FONT color=#006699>divid</FONT></STRONG>="saveshoutoutaddimgs"<FONT color=#0000ff>style</FONT>="display:none;"<STRONG><FONT color=#006699>></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699><div></FONT></STRONG> <LI class="">AddImage:<STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>divid</FONT><STRONG><FONT color=#006699>divid</FONT></STRONG>=<FONT color=#0000ff>"browseimg"</FONT><STRONG><FONT color=#006699>></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>inputtype</FONT><STRONG><FONT color=#006699>inputtype</FONT></STRONG>=<FONT color=#0000ff>"file"</FONT><STRONG><FONT color=#006699>/></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><div></FONT></STRONG> <LI class=alt>Sizelimitoftheimagesis100kb.HieghtandWidthoftheimagesshouldnotexceed  <LI class="">200px.<STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699><div></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>inputid</FONT><STRONG><FONT color=#006699>inputid</FONT></STRONG>="chkAgree"<FONT color=#0000ff>type</FONT>="checkbox"<FONT color=#ff0000>onclick</FONT>=<FONT color=#0000ff>"$get('btAdd').<BR>disabled=!this.checked;"</FONT><STRONG><FONT color=#006699>/></FONT></STRONG>I  <LI class=alt>agree.legalsignofftexttobedefined.  <LI class=""><STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699><div></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>inputid</FONT><STRONG><FONT color=#006699>inputid</FONT></STRONG>="btAdd"<FONT color=#0000ff>disabled</FONT>="disabled"<FONT color=#ff0000>type</FONT>="button"<FONT color=#0000ff>value</FONT>="Add"<FONT color=#ff0000>runat</FONT>=<FONT color=#0000ff>"server"</FONT><STRONG><FONT color=#006699>/></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699></< SPAN>div></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>asp:TextBoxID</FONT><STRONG><FONT color=#006699>asp:TextBoxID</FONT></STRONG>="tbImgs"<FONT color=#0000ff>runat</FONT>="server"<FONT color=#ff0000>Text</FONT>="|"<FONT color=#0000ff>Style</FONT>=<BR>"display:none;"<STRONG><FONT color=#006699>></< SPAN>asp:TextBox></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699><</FONT></STRONG><FONT color=#ff0000>asp:TextBoxID</FONT><STRONG><FONT color=#006699>asp:TextBoxID</FONT></STRONG>="tbOldImgs"<FONT color=#0000ff>runat</FONT>="server"<FONT color=#ff0000>Text</FONT>="|"<FONT color=#0000ff>Style</FONT>=<BR>"display:none;"<STRONG><FONT color=#006699>></< SPAN>asp:TextBox></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699></< SPAN>form></FONT></STRONG> <LI class=""><STRONG><FONT color=#006699></< SPAN>body></FONT></STRONG> <LI class=alt><STRONG><FONT color=#006699></< SPAN>html></FONT></STRONG> </LI></OL></PRE> <P>【编辑推荐】</P> <OL> <LI><FONT color=#0000ff>ASP.NET插件的实现方式</FONT></LI> <LI><FONT color=#0000ff>概述ASP.NET应用程序</FONT></LI> <LI><FONT color=#0000ff>浅谈ASP.NET 2.0数据绑定</FONT></LI> <LI><FONT color=#0000ff>ASP.NET阻止Java Script注入式攻击</FONT></LI> <LI><FONT color=#0000ff>ASP.NET MVC使用T4</FONT></LI></OL> <!--end::Text--> </div> <!--end::Description--> <div class="mt-5"> <!--关键词搜索--> </div> <div class="mt-5"> <p class="fc-show-prev-next"> <strong>上一篇:</strong><a href="/chengxu/16003.html">甲骨文再次调价 某些产品涨幅达40%</a><br> </p> <p class="fc-show-prev-next"> <strong>下一篇:</strong><a href="/chengxu/16005.html">高手总结CSS书写技巧</a> </p> </div> <!--begin::Block--> <div class="d-flex flex-stack mb-2 mt-10"> <!--begin::Title--> <h3 class="text-dark fs-5 fw-bold text-gray-800">相关内容</h3> <!--end::Title--> </div> <div class="separator separator-dashed mb-9"></div> <!--end::Block--> <div class="row g-10"> </div> </div> <!--end::Table widget 14--> </div> <!--end::Col--> <!--begin::Col--> <div class="col-xl-4 mt-0"> <!--begin::Chart Widget 35--> <div class="card card-flush h-md-100"> <!--begin::Header--> <div class="card-header pt-5 "> <!--begin::Title--> <h3 class="card-title align-items-start flex-column"> <!--begin::Statistics--> <div class="d-flex align-items-center mb-2"> <!--begin::Currency--> <span class="fs-5 fw-bold text-gray-800 ">热门资讯</span> <!--end::Currency--> </div> <!--end::Statistics--> </h3> <!--end::Title--> </div> <!--end::Header--> <!--begin::Body--> <div class="card-body pt-3"> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/chengxu/241137.html" class="text-dark fw-bold text-hover-primary fs-6">如何允许远程连接到MySQL数...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">[[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/chengxu/61017.html" class="text-dark fw-bold text-hover-primary fs-6">如何利用交换机和端口设置来管理...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/chengxu/119031.html" class="text-dark fw-bold text-hover-primary fs-6">施耐德电气数据中心整体解决方案...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://files.pic99.top/shayuweb/202409/eb2e03366045d9f.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/chengxu/139440.html" class="text-dark fw-bold text-hover-primary fs-6">20个非常棒的扁平设计免费资源</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/chengxu/27164.html" class="text-dark fw-bold text-hover-primary fs-6">2009 IBM动态架构新动力...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7"></span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/chengxu/225.html" class="text-dark fw-bold text-hover-primary fs-6">通过 XML 进行内容发布</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7"></span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/chengxu/130901.html" class="text-dark fw-bold text-hover-primary fs-6">德国电信门户网站可实时显示全球...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://files.pic99.top/shayuweb/202503/5fe82cca6c5ff78.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/chengxu/246646.html" class="text-dark fw-bold text-hover-primary fs-6">为啥国人偏爱 Mybatis,...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://files.pic99.top/shayuweb/202407/404021d01b8347f.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/chengxu/48727.html" class="text-dark fw-bold text-hover-primary fs-6">《非诚勿扰》红人闫凤娇被曝厕所...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/static/assets/images/nopic.gif')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/chengxu/133934.html" class="text-dark fw-bold text-hover-primary fs-6">2012年第四季度互联网状况报...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">[[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...</span> </div> <!--end::Title--> </div> </div> <!--end::Body--> </div> <!--end::Chart Widget 35--> </div> <!--end::Col--> </div> </div> <!--end::Content container--> </div> <!--end::Content--> </div> <!--end::Content wrapper--> <!--begin::Footer--> <div id="kt_app_footer" class="app-footer"> <!--begin::Footer container--> <div class="app-container container-xxl d-flex flex-column flex-md-row flex-center flex-md-stack py-3"> <!--begin::Copyright--> <div class="text-dark order-2 order-md-1"> <span class="text-muted fw-semibold me-1">2025 ©</span> <a href="/" target="_blank" class="text-gray-800 text-hover-primary">鲨鱼网</a> <a href="https://beian.miit.gov.cn/" target="_blank" class="text-gray-800 text-hover-primary"></a> <a href="http://spbjmm.com.shayuweb.com">上品网</a><a href="http://www.zzszq.net/">深知网</a><a href="http://www.taiyangwa.net/">太阳生活网</a><a href="http://baike.taiyangwa.net/">太阳百科网</a><a href="http://ypkjmy.com.shayuweb.com/">一品科技</a><a href="http://www.yuansudz.com/news/">元素网</a><a href="http://www.xn--i6qw12a.com/">帛典网</a><a href="http://xldmm.com.shayuweb.com/">星链岛</a> </div> <!--end::Copyright--> <!--begin::Menu--> <ul class="menu menu-gray-600 menu-hover-primary fw-semibold order-1"> <li class="menu-item"> <a href="/news/" target="_blank" class="menu-link px-2">科技资讯</a> </li> <li class="menu-item"> <a href="/chengxu/" target="_blank" class="menu-link px-2">程序开发</a> </li> <li class="menu-item"> <a href="/sitemap.xml" target="_blank" class="menu-link px-2">sitemap</a> </li> </ul> <!--end::Menu--> </div> <!--end::Footer container--> </div> <!--end::Footer--> </div> <!--end:::Main--> </div> <!--end::Wrapper--> </div> <!--end::Page--> </div> <!--end::App--> <div id="kt_scrolltop" class="scrolltop" data-kt-scrolltop="true"> <!--begin::Svg Icon | path: icons/duotune/arrows/arr066.svg--> <span class="svg-icon"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect opacity="0.5" x="13" y="6" width="13" height="2" rx="1" transform="rotate(90 13 6)" fill="currentColor"></rect> <path d="M12.5657 8.56569L16.75 12.75C17.1642 13.1642 17.8358 13.1642 18.25 12.75C18.6642 12.3358 18.6642 11.6642 18.25 11.25L12.7071 5.70711C12.3166 5.31658 11.6834 5.31658 11.2929 5.70711L5.75 11.25C5.33579 11.6642 5.33579 12.3358 5.75 12.75C6.16421 13.1642 6.83579 13.1642 7.25 12.75L11.4343 8.56569C11.7467 8.25327 12.2533 8.25327 12.5657 8.56569Z" fill="currentColor"></path> </svg> </span> <!--end::Svg Icon--> </div> <!--begin::Javascript--> <script>var hostUrl = "/static/default/pc/";</script> <!--begin::Global Javascript Bundle(mandatory for all pages)--> <script src="/static/default/pc/plugins/global/plugins.bundle.js"></script> <script src="/static/default/pc/js/scripts.bundle.js"></script> <!--end::Global Javascript Bundle--> <!--end::Javascript--> </body> <!--end::Body--> </html>