仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 338|回复: 7
打印 上一主题 下一主题

[学习教程] ASP编程:上传的进度条 及时反应上传情形

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:30:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
减少客户内IT专业人才缺乏带来的影响。ASP的客户员工利用浏览器进入相关的应用软件,简单易用,无需专业技术支持。asp中利用组件上传时,有点贫苦就是不晓得上传进度是几,固然有的供应了上传进度条,比方abcupload(下载地点:http://www.websupergoo.com)已供应了显现以后上传形态的办法,内里就有专门的实例(在安装目次的Examples上面的progressupload.htm),它是提交数据的同时弹出一个反应进度的页面(progressbar.asp),然后经由过程这个页面自革新来每隔一点工夫猎取事先的上传形态,然后把它们显现出来,可是用页面自革新的办法效力对照低,不欠好调治革新工夫距离(最小距离为1秒),并且服务器端前往数据量年夜,以是不克不及很好的及时反应上传情形。在客户端利用javascript挪用MSXMl工具和setTimout办法往准时load一个xml文件能够完成无革新准时猎取服务器端数据,在这里可让progressbar.asp输入xml格局的数据,然后供客户端load,仅前往需要的几个参数,如许:页面不革新;传输的数据少,不必要把一切数据全传到客户端,只传输反应形态的数据,假如准时器设置的工夫充足小,那末我们就能够"及时"看到上传的情况了。以下就以abcupload4为例来讲明怎样来制造及时的文件上传进度条。

(注:我们在abcupload自带例子基本上改善。)

progressupload.htm(上传文件的前台提交,我们让进度条在这个内里显现)



<html>

<body>



<scriptlanguage="javascript">

<!--

theUniqueID=(newDate()).getTime()%1000000000;

functions()//让数据提交的同时实行显现进度条的函数

{

bar();//入手下手实行反应上传情形的函数

document.myform.action="progressupload.asp?ID="+theUniqueID;//处置上传数据的程序

document.myform.target="up"//将提交的数据放在一个名字是up埋没的iframe内里处置,如许提交的页面就不会跳转各处理数据的页

document.myform.submit();//提交表单





}

functionbar()

{

bar1.style.display=;//让显现上传进度显现的层的可见

vartimeoutid=null;//这个变量是作准时器的ID

varoXMLDoc=newActiveXObject(MSXML);//创立MSXML工具

sURL="progressbar.asp?ID="+theUniqueID+"&temp="+Math.random();//猎取上传形态数据的地点

oXMLDoc.url=sURL;//load数据

varoRoot=oXMLDoc.root;//猎取前往xml数据的根节点

if(oRoot.children!=null)

{

if(oRoot.children.item(0).text-100==0)//文件上传停止就作废准时器

clearTimeout(timeoutid)

PercentDone.style.width=oRoot.children.item(0).text+"%";//设置进度条的百分比例

//依据前往的数据在客户端显现

min.innerHTML=oRoot.children.item(1).text;//显现残剩工夫(分钟)

secs.innerHTML=oRoot.children.item(2).text;//显现残剩工夫(秒钟)

BytesDone.innerHTML=oRoot.children.item(3).text;//已上传数据巨细

BytesTotal.innerHTML=oRoot.children.item(4).text;//总巨细

BytesPerSecond.innerHTML=oRoot.children.item(5).text;//传输速度

Information.innerHTML=oRoot.children.item(6).text;//上传信息

}

if(oRoot.children.item(0).text-100<0)//只需文件没有传完,就每隔几工夫猎取一次数据

timeoutid=setTimeout("bar()",50)//这里设准时间距离是0.05秒,你也能够依据你的情形修正猎取数据工夫距离

}

//-->

</script>



<formname="myform"method="post"action="progressupload.asp"enctype="multipart/form-data"target=up>

<inputtype="file"name="filefield1"><br>

<inputtype="button"name="dosubmit"value="Upload"><br>

<divid=bar1style="display:none">

<tableborder="0"width="100%">

<tr>

<td><fontface="Verdana,Arial,Helvetica,sans-serif"size="2"><b>传送:</b></font></td>

</tr>

<trbgcolor="#999999">

<td>

<tableborder="0"width=""cellspacing="1"bgcolor="#0033FF"id=PercentDone>

<tr>

<td><fontsize=1></font></td>

</tr>

</table>

</td>

</tr>

<tr>

<td>

<tableborder="0"width="100%">

<tr>

<td><fontface="Verdana,Arial,Helvetica,sans-serif"size="1">残剩工夫:</font></td>

<td><fontface="Verdana,Arial,Helvetica,sans-serif"size="1">

<spanid=min></span>分

<spanid=secs></span>秒

(<spanid=BytesDone></span>KBof

<spanid=BytesTotal></span>KB已上传)</font></td>

</tr>

<tr>

<td><fontface="Verdana,Arial,Helvetica,sans-serif"size="1">

传送速率:</font></td>

<td><fontface="Verdana,Arial,Helvetica,sans-serif"size="1">

<spanid=BytesPerSecond></span>KB/秒</font></td>

</tr>

<tr>

<td><fontface="Verdana,Arial,Helvetica,sans-serif"size="1">信息:</font></td>

<td><fontface="Verdana,Arial,Helvetica,sans-serif"size="1"><spanid=Information></span></font></td>

</tr>

</table>

</td>

</tr>

<tr></tr>

</table>

</div>

<iframename="up"style="display:none"></iframe>

</form>



</body>

</html>



progressbar.asp(前往上传情况数据的文件)



<%@EnableSessionState=False%>

<%

OnErrorResumeNext

SettheProgress=Server.CreateObject("ABCUpload4.XProgress")创立上传组件工具

theProgress.ID=Request.QueryString("ID")

将前往数据以xml格局输入

%>

<?xmlversion="1.0"encoding="gb2312"?>

<plan>

<PercentDone><%=theProgress.PercentDone%></PercentDone>

<min><%=Int(theProgress.SecondsLeft/60)%></min>

<secs><%=theProgress.SecondsLeftMod60%></secs>

<BytesDone><%=Round(theProgress.BytesDone/1024,1)%></BytesDone>

<BytesTotal><%=Round(theProgress.BytesTotal/1024,1)%></BytesTotal>

<BytesPerSecond><%=Round(theProgress.BytesPerSecond/1024,1)%></BytesPerSecond>

<Information><%=theProgress.Note%></Information>

</plan>



progressupload.asp(处置上传文件)



<%@EnableSessionState=False%>

<%

Response.Expires=-10000

Server.ScriptTimeOut=300



SettheForm=Server.CreateObject("ABCUpload4.XForm")

theForm.Overwrite=True

theForm.MaxUploadSize=8000000

theForm.ID=Request.QueryString("ID")

SettheField=theForm("filefield1")(1)

IftheField.FileExistsThen

theField.SavetheField.FileName

EndIf

%>



<html>

<body>

传送停止

</body>

</html>





关于其他组件上传,道理也就差未几了,只是办法纷歧样而已。

但愿人人有甚么定见和倡议和我接洽:)

junminliu@msn.com
专业性的服务。有的ASP商提供垂直型的应用服务,针对某一特定行业提供应用服务。
爱飞 该用户已被删除
沙发
发表于 2015-1-19 15:50:54 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
莫相离 该用户已被删除
板凳
发表于 2015-2-3 12:23:51 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
再现理想 该用户已被删除
地板
发表于 2015-2-8 22:57:03 | 只看该作者
那么,ASP.Net有哪些改进呢?
简单生活 该用户已被删除
5#
发表于 2015-2-26 12:47:52 | 只看该作者
如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
只想知道 该用户已被删除
6#
发表于 2015-3-8 15:19:25 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
小女巫 该用户已被删除
7#
发表于 2015-3-16 03:08:47 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
柔情似水 该用户已被删除
8#
发表于 2015-3-22 19:10:46 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-10 04:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表