Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度
2009-07-10 12:01
691 查看
Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度
回顾上一篇:
我们介绍了如何从HTTP请求流中将数据部分进行截取,同时将数据相关信息进行保存。
本篇概述:
用过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显示此效果的代码(搜集于网上):
ModalDialog
接着讲我们的重点:如何实现定时局部刷新。
关于XmlHttpRequest对象,我这里就不详细讲述了,提供大家一个关于此的手册下载。为了大家更容易理解,我举个小例子:
小例子
通过以上小例子,大家应该已经对该对象有所了解了吧。为实现定时刷新,我把进度条单独放在一个页面中(如A.aspx),通过js的setTimeout来定时执行类似returnresponse这样的方法,然后在A.aspx.cs代码中获取文件信息对象,接着通过Response来反馈进度信息。这样在A.aspx页面中就可以获取到信息,并进行显示了。但是执行ActiveXObject将要花费不少代价,而且我们是定时执行该方法,显然会造成性能下降。在参考了构建一个pool来管理无刷新页面的xmlhttp对象后,决定采用这一方法,事实证明该方法确实有效。
利用pool后的代码
到这就差不多整个专题都结束了,接下来几天,我会把代码稍微调整下,然后传上来。
由于这段时间要上班,实在抽不出时间来整理,如果大家需要可以先拿去看看。不过代码写的有点乱,而且有些功能也没有完善,时间实在太少,大家见谅。
粗糙的工程
回顾上一篇:
我们介绍了如何从HTTP请求流中将数据部分进行截取,同时将数据相关信息进行保存。
本篇概述:
用过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显示此效果的代码(搜集于网上):
ModalDialog
接着讲我们的重点:如何实现定时局部刷新。
关于XmlHttpRequest对象,我这里就不详细讲述了,提供大家一个关于此的手册下载。为了大家更容易理解,我举个小例子:
小例子
通过以上小例子,大家应该已经对该对象有所了解了吧。为实现定时刷新,我把进度条单独放在一个页面中(如A.aspx),通过js的setTimeout来定时执行类似returnresponse这样的方法,然后在A.aspx.cs代码中获取文件信息对象,接着通过Response来反馈进度信息。这样在A.aspx页面中就可以获取到信息,并进行显示了。但是执行ActiveXObject将要花费不少代价,而且我们是定时执行该方法,显然会造成性能下降。在参考了构建一个pool来管理无刷新页面的xmlhttp对象后,决定采用这一方法,事实证明该方法确实有效。
利用pool后的代码
到这就差不多整个专题都结束了,接下来几天,我会把代码稍微调整下,然后传上来。
由于这段时间要上班,实在抽不出时间来整理,如果大家需要可以先拿去看看。不过代码写的有点乱,而且有些功能也没有完善,时间实在太少,大家见谅。
粗糙的工程
相关文章推荐
- Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度
- Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度
- Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度
- [转]Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度
- Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度
- Asp.Net 上传大文件(利用ajax技术显示上传进度)
- ASP.NET MVC利用input通过ajax上传文件
- Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)
- asp.net大文件分块上传与进度显示,完整项目源码
- [C#]利用ajax技术显示上传进度[转]
- Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)
- C#结合js 上传文件和删除文件(技术点有:asp.net mvc ,nhibernate,ajax等)
- Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)(转)
- flash+asp.net上传文件,显示进度条
- 本周ASP.NET英文技术文章推荐[02/24 - 03/01]:Silverlight、AJAX、Web Client Software Factory、LINQ、上传文件、GDI+
- 【转】Asp.NET大文件上传组件开发总结(五)---上传进度信息的显示
- Asp.NET大文件上传组件开发总结(五)---上传进度信息的显示
- 【收藏】本周ASP.NET英文技术文章推荐[02/24 - 03/01]:Silverlight、AJAX、Web Client Software Factory、LINQ、上传文件、GDI+
- ASP.Net上传文件带进度条、显示剩余时间!
- Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)