您的位置:首页 > 编程语言 > C#

[C#]利用ajax技术显示上传进度[转]

2009-03-31 00:12 330 查看
我们介绍了如何从HTTP请求流中将数据部分进行截取,同时将数据相关信息进行保存。

本篇概述:

用过ajax的朋友应该有听过XmlHttpRequest对象,ajax其实就是通过XmlHttpRequest对象来向服务器发出异步请求,并从服务器获得数据,然后用javascript来操作DOM而更新页面。

本篇就是要通过XmlHttpRequest对象来实现实时的进度显示。

效果图:

string sguid = GetUploadId(bPreloadedEnitityBody, eContentEncode);//GetUploadId是自己写的一个方法用来从请求流中获取上传ID

UploadFileInfo ufiFileInfo = (UploadFileInfo)HttpContext.Current.Cache[sguid];//取出文件信息对象

其它页面如果要使用这个对象就得先获取ID,之后就可以自由操作了。

2、进度的显示

从图中我们可以看到,当显示进度的时候,背后的页面成灰色,并且无法响应任何事件,有点类似模态窗口。这个效果大家可以在网上查查,还是挺容易实现的。我这里有一段js显示此效果的代码(搜集于网上):

function returnresponse(url)

//URL所指向的页面B的代码.cs,当然也可以是同一个页面的cs

if(Request.QueryString["event"]=="test")

var a = new xmlHttpPoolFactory();//建立一个全局的工厂实例

var strevent = "";

function refresh(url,interval,div)

{//该方法我用来定时刷新,因为除了SetTimeout还有一些其它活要干

var str1 = "";

for(i=2;i<arguments.length;i++)

{//因为可能需要刷新的div不只一个,所以利用js的arguments来解决动态参数的问题

if(i!=arguments.length-1)

{

str1 = str1 +arguments[i]+",";

}

else

{

str1 = str1 +arguments[i];

}

}

a.returnresponse(url,str1); //调用该方法实现异部通信

var str="";

for(i=0;i<arguments.length;i++)

{

if(i!=arguments.length-1)

str = str + "'"+arguments[i]+"',";

else

str = str+"'"+arguments[i]+"'";

}

setTimeout("refresh("+str+")", interval );//定时执行该方法

}

到这就差不多整个专题都结束了,接下来几天,我会把代码稍微调整下,然后传上来。

由于这段时间要上班,实在抽不出时间来整理,如果大家需要可以先拿去看看。不过代码写的有点乱,而且有些功能也没有完善,时间实在太少,大家见谅。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: