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

Asp.Net 上传大文件(利用ajax技术显示上传进度)

2010-06-25 15:07 791 查看
本篇概述:
用过ajax的朋友应该有听过XmlHttpRequest对象,ajax其实就是通过XmlHttpRequest对象来向服务器发出异步请求,并从服务器获得数据,然后用javascript来操作DOM而更新页面。
本篇就是要通过XmlHttpRequest对象来实现实时的进度显示。

效果图:

if (!IsPostBack)
string sguid = GetUploadId(bPreloadedEnitityBody, eContentEncode);//GetUploadId是自己写的一个方法用来从请求流中获取上传ID
UploadFileInfo ufiFileInfo = (UploadFileInfo)HttpContext.Current.Cache[sguid];//取出文件信息对象

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

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

function ModalDialog(name,divid,width,height,leftop,topop,color)
//页面A.aspx
function returnresponse(url)

//URL所指向的页面B的代码.cs,当然也可以是同一个页面的cs
if(Request.QueryString["event"]=="test")

function xmlHttpPoolFactory()
var a = new xmlHttpPoolFactory();//建立一个全局的工厂实例
var strevent = "";
function refresh(url,interval,div)
{//该方法我用来定时刷新,因为除了SetTimeout还有一些其它活要干
{//因为可能需要刷新的div不只一个,所以利用js的arguments来解决动态参数的问题
{
{
{
if(i!=arguments.length-1)
str = str + "'"+arguments[i]+"',";
else
str = str+"'"+arguments[i]+"'";
}
setTimeout("refresh("+str+")", interval );//定时执行该方法

}

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

由于这段时间要上班,实在抽不出时间来整理,如果大家需要可以先拿去看看。不过代码写的有点乱,而且有些功能也没有完善,时间实在太少,大家见谅。
粗糙的工程

本文转自:/article/4779113.html (我不是圣人的博客)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: