宝玉的blog

专注于web开发技术
随笔 - 78, 评论 - 1563, 引用 - 157

导航

关于


目前致力于ChinaCommunityServer的开发。

msn: junminliu(at)msn.com

标签

每月存档

最新留言

  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:37
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:31
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:30
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:29
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:25
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:25
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:25
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:25
  • re:Silverlight中,防止ComboBox抢焦点
    在家”用网路”赚全世界的钱! 这是真正实现跨国事业最好的机制。藉由网路无远弗届的力量, 让全球超过180个国家变成一个单一市场,在你加入的那一刻, 网路能到达的地方,就是你收入能到达的地方。 ...
    by jackielongteng(注册) on 2009/6/14 13:19:48
  • re:Silverlight中,防止ComboBox抢焦点
    <p>我是初学者,您已经写了一个 组件上传的功能 。。我在2008下测试通过,,,但是弄2005测试的时候 发现 progress.aspx.cs页面的</p> <p&...
    by jxh12345j(注册) on 2009/4/7 8:55:12
  • ufnnutdh - Google Search
    ufnnutdh - Google Search
    by (匿名) on 2008/10/27 17:44:45
  • veysaync - Google Search
    veysaync - Google Search
    by (匿名) on 2008/10/5 5:20:49
  • mzgmhgio - Google Search
    mzgmhgio - Google Search
    by (匿名) on 2008/9/22 23:34:49
  • rhmhnyma - Google Search
    rhmhnyma - Google Search
    by (匿名) on 2008/9/22 7:48:44
  • re: 发布一个爱心小软件——网页抓图
    Maxthon应该有这个功能
    by passos(匿名) on 2008/7/21 20:05:23

广告

 

对于web下的上传,实际上更多的时候不用上传太大东西,asp.net默认的上传组件足够用了,美中不足就是没有上传进度反映,所以现在要做的就是在asp.net默认的上传基础上加上进度反映。

关于web上传的原理,曾在以前有深入分析过《asp无组件上传进度条解决方案》《Asp无组件上传带进度条(续) 》,并有写过asp版的无组件上传进度条,在这里就不多赘述。相信很多人都看过思归发的《用ASP.NET上传大文件》,解决的方法是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法从IIS为ASP.NET建立的pipe里分块读取数据,对于每块分块进行分析并存储为临时文件,相对比较复杂。

要实现进度条的实时反映,核心的技术就是对上传的数据进行“分块”读取,在读取每块数据时记录当前已上传的块数,根据分块的大小,即可知道已上传的大小,根据总大小,即可知道当前上传的进度。具体的技术还是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法从IIS为ASP.NET建立的pipe里分块读取数据,只不过仅仅是分块和记录已上传块数而已,用不着对已上传的数据进行分析和处理,因为这部分复杂的工作已经由asp.net的上传组件给我们做了。

根据上面所述的原理,具体代码相对很简单,我写了一个例子,用一个专门的进度显示页面(Progress.aspx),通过定时刷新(XmlHttp, FF支持)来获取当前上传的进度信息,并实时反映到上传页面上。

代码下载(解压后给web目录设置虚拟目录为“Upload”即可),其中进度条我是用脚本来实现的,单独的进度条脚本代码:
http://www.webuc.net/myproject/progressbar/progressinfo.htm
http://www.webuc.net/myproject/progressbar/progressbar.rar

打印 | 张贴于 2005-06-12 21:35:00 | Tag:Web技术

留言反馈

#回复: 让asp.net默认的上传组件支持进度条反映 编辑
试了一下,还真行,不错的东西。
有些兄弟说:文件上传上了,但是在上传过程中进度条没有显示进度,等上传完毕后才显示进度条。
可能是你上传的文件太小了,你传个100M的试试就能看到效果了。还有就是改动那个setTimeout的internal参数,让它的值变小点,本来是500,你改成100的话就能看到进度条快速的动了。

不过在最后读取完成的时候就变慢了,不知道是不是那行“传入读取的内容”代码吃掉了所有的CPU时间呢。我想在这前面加一个状态,比如:生成文件。但是pressbar.aspx监测不到。
2007-12-22 21:24:00 | [匿名用户:阿生仔]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
我要是能够写这样的javascript 我就发达了,崇拜...
2007-12-21 15:44:00 | [匿名用户:杨浩]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
这是不是不真实啊。
2007-12-14 16:24:00 | [匿名用户:jgh]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
文件上传上了,但是在上传过程中进度条没有显示进度,等上传完毕后才显示进度条。请问你们出现这样的情况没有,如何解决?请帮忙解决啊!急!!!!!!
2007-11-28 14:37:00 | [匿名用户:guest]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
真是太棒了,05年就写了这么牛的东西,顶顶顶
2007-11-21 15:56:00 | [匿名用户:顶!]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
这个上传组件很好用,就是点了上传后会不断弹出窗口显示“[object Error]”。
2007-10-30 16:00:00 | [匿名用户:xxx]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
检测到文件超过最大限制,如何中止上传进程?

用js应该可以控制吧
2007-09-22 23:56:00 | [匿名用户:wedding dress]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
检测到文件超过最大限制,如何中止上传进程?
2007-09-16 23:05:00 | [匿名用户:冰皓]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
文件上传上了,但是在上传过程中进度条没有显示进度,等上传完毕后才显示进度条。请问你们出现这样的情况没有,如何解决?有好办法给我留言呢!
2007-09-07 19:48:00 | [匿名用户:bob.zhang]
#asp.net 上传大文件解决方案(转) 编辑
这次在项目中,用到了大文件上传,要上传的文件有100多m,于是研究现在国内使用的大文件上传的 组件发现用的比较多的有两个控件AspnetUpload2.0和Lion.Web.UpLoadModul...
2007-09-05 17:30:00 | [匿名用户:绿毛虫]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
哦,知道了,要把js文件用记事本打开转换为UTF-8格式就不会出错了,,,,,
2007-07-20 11:12:00 | [匿名用户:nelson]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
我用ASP.NET1.1,在Window 2003下测试老出现,脚本错误
行:168
字符:27
错误:未结束的字符串变量
代码:0

请问,这是什么原因呢?我已把charset设为了UTF-8及targetschema设为了IE5了
2007-07-20 10:08:00 | [匿名用户:nelson]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
好怪,单独用你的例子沒事,但是我一整入项目中就发现Application_BeginRequest出錯,弹出消息框[object Error],老是找不出哪里错了。。。
2007-05-29 03:56:00 | [匿名用户:forty]
#asp.net 上传大文件解决方案 编辑
这次在项目中,用到了大文件上传,要上传的文件有100多m,于是研究现在国内使用的大文件上传的组件发现用的比较多的有两个控件AspnetUpload2.0和Lion.Web.UpLoadModule,...
2007-05-18 15:51:00 | [匿名用户:穿石水滴]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
web.config那里都没得改上传的大小的啊 ,请问是在哪里修改,详细一点
2007-04-23 13:31:00 | [匿名用户:ewrf]
#Asp.netUpload(大文件上传) 终于找到一个可以用的了 编辑
在经过两天的网络奋战之后,终于可以松口气了
2007-03-28 11:29:00 | [匿名用户:小K]
#[整理]asp.net 上传大文件解决方案 (转) 编辑
(转载地址:http://www.cnblogs.com/skylaugh/archive/2007/01/22/448136.html#626698)这次在项目中,用到了大文件上传,要上传的文件有1...
2007-01-23 13:58:00 | [匿名用户:NET人生]
#大文件上传 编辑
http://blog.csdn.net/zgh2002007/archive/2006/11/23/1406632.aspx这次在项目中,用到了大文件上传,要上传的文件有100多m,于是研究现在国内...
2007-01-12 13:53:00 | [匿名用户:mbskys]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
上传文件的保存目录
2007-01-10 16:18:00 | [匿名用户:henry]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
上传文件的保存目录 上传文件的保存目录 上传文件的保存目录
2007-01-10 16:18:00 | [匿名用户:henry]
#【转】asp.net 上传大文件解决方案 编辑
这次在项目中,用到了大文件上传,要上传的文件有100多m,于是研究现在国内使用的大文件上传的组件发现用的比较多的有两个控件AspnetUpload2.0和Lion.Web.UpLoadModule,...
2007-01-04 22:26:00 | [匿名用户:mbskys]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
在.Net 2.0下如何应用啊?
2006-12-20 16:19:00 | [匿名用户:me]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
下载学习一下
2006-12-13 11:31:00 | [匿名用户:xtive]
#回复: 让asp.net默认的上传组件支持进度条反映 编辑
下载学习一下,我最近也在给客户做这个东西
2006-12-13 11:31:00 | [匿名用户:xtive]
#上传文件2 编辑
上传文件2
2006-11-23 00:17:00 | [匿名用户:zgh2002007]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
高手.很东错的东东.
2006-11-07 14:10:00 | [匿名用户:AA]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
如何在我的程序中调用你的进度组件?
2006-09-30 10:47:00 | [匿名用户:army]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
好象可以上传,带是进度条没反应,上传完毕后,进度条才显示出100%,请问这是怎么回事啊?
2006-08-29 10:40:00 | [匿名用户:talkshwh@163.com]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
好东西学习一下!!!
2006-08-08 09:14:00 | [匿名用户:肯]
#[整理]asp.net 上传大文件解决方案 编辑
这次在项目中,用到了大文件上传,要上传的文件有100多m,于是研究现在国内使用的大文件上传的组件发现用的比较多的有两个控件AspnetUpload2.0和Lion.Web.UpLoadModule,...
2006-07-25 14:58:00 | [匿名用户:仰天一笑]
#让asp.net默认的上传组件支持进度条反映 编辑
http://www.webuc.net/MyProject/openlabupload.rar
2006-06-30 10:54:00 | [匿名用户:冬冬]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
进度条怎么是一下子就显示了那
2006-06-28 13:14:00 | [匿名用户:seiya]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
不错
2006-06-23 15:26:00 | [匿名用户:超]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
文件没有保存。他把代码注释了
2006-06-09 09:39:00 | [匿名用户:fastyou]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
上传文件的去了哪个地方呀.
2006-06-05 18:15:00 | [匿名用户:冰雨]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
上传没有问题,只是进度条不动,何解?
2006-05-26 09:49:00 | [匿名用户:QQS]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
用不到OpenlabUpload, 怎麽用?
2006-05-18 05:47:00 | [匿名用户:skypekid]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
宝玉:能再说的详细点吗?如果我要接触这方面的东西,那么需要了解些什么,例如httpMoudle,XmlHttp,等等,综合性的介绍一下好吗?
2006-05-17 11:42:00 | [匿名用户:Lee]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
我测试了,可以看到上传的过程,也显示成功,可是上传文件的保存目录在哪?
2006-05-09 15:20:00 | [匿名用户:w4yu]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
为什么找不到上传的文件呢?
是不是还的自己写代码呢?
2006-04-27 17:47:00 | [匿名用户:8555]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
好东西,支持!
2006-04-15 14:48:00 | [匿名用户:笨笨]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
怎么样修改web.config文件,使它能上传大文件,,
2006-04-15 10:00:00 | [匿名用户:刘邦]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
怎么文件上传不了!!我都找不到他呀
2006-04-13 21:58:00 | [匿名用户:怎么文件上传不了!!]
#Link 编辑
TrackBack From:http://SunnyZhao.cnblogs.com/archive/0001/01/01/284237.html
2006-03-29 15:17:00 | [匿名用户:Sunny]
#ASP.NET 编辑
TrackBack From:http://SunnyZhao.cnblogs.com/archive/0001/01/01/286134.html
2006-03-29 14:57:00 | [匿名用户:Sunny]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
谢谢,大文件上传成功了。不错的东西!
2006-03-29 11:24:00 | [匿名用户:Hoky]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
如果限制大小的话,
如果上传的文件超过了限制的大小,有没有办法在文件完全上传完之前 中断操作呢?
2006-02-13 21:23:00 | [匿名用户:暴风雪]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
我不太明白为什么上传完成后页面的进度条还在走?

有些不太完美,有人知道解决方法么?

谢谢。
2006-02-13 21:21:00 | [匿名用户:暴风雪]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
你设置一下web.config不就能上传大文件了吗?默认情况下是4096K,你把它改大了就能上传了,传个大游戏都没问题
2006-01-20 14:35:00 | [匿名用户:孙]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
宝玉,在windows 2003下显示不出进度条啊,而且大文件还上传不上去
2005-12-16 16:19:00 | [匿名用户:tianjj]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
在windows 2003下显示不出进度条啊,而且大文件还上传不上去
2005-07-11 17:55:00 | [匿名用户:111]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
在windows 2003下显示不出进度条啊,而且大文件还上传不上去
2005-07-11 17:55:00 | [匿名用户:111]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
不能下载
我的E_M:okokdaikin@21cn.com
2005-07-09 20:18:00 | [匿名用户:rudolf]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
老大 ,不能下载代码?
2005-06-25 15:09:00 | [匿名用户:DrkBreeze]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
正需要呢!多谢啦!收藏!
2005-06-25 00:27:00 | [匿名用户:Mac]
#re: 让asp.net默认的上传组件支持进度条反映 编辑
这个是个好东西,收藏下来!
2005-06-21 10:41:00 | [匿名用户:星期零]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.1.0