Asp.Net 上传大文件专题(4)

  • 时间:
  • 浏览:3
  • 来源:大发快3官方网址—大发快3APP下载

      通过以上小例子,我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 应该机会对该对象有所了解了吧。为实现定时刷新,我把进度条单独上放另一个页面中(如A.aspx),通过js的setTimeout来定时执行相似returnresponse越来越 的办法,某些在A.aspx.cs代码中获取文件信息对象,接着通过Response来反馈进度信息。越来越 在A.aspx页面中就不还还能不能获取到信息,并进行显示了。某些执行ActiveXObject将至少不少代价,某些我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 是定时执行该办法,显然会造成性能下降。在参考了构建另一个pool来管理无刷新页面的xmlhttp对象后,决定采用这俩 办法,事实证明该办法我觉得有效。

本文转自stg5009博客园博客,原文链接:http://www.cnblogs.com/stg5009/archive/5008/08/04/1259469.html,如需转载请自行联系原作者



      接着讲我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 的重点:怎么实现定时局部刷新。

      关于XmlHttpRequest对象,我这里就不删剪讲述了,提供我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 另一个关于此的手册下载。为了我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 更容易理解,我举个小例子:

  

      本篇概述:

      用过ajax的我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 应该有听过XmlHttpRequest对象,ajax我觉得就说 通过XmlHttpRequest对象来向服务器发出异步请求,并从服务器获得数据,某些用javascript来操作DOM而更新页面。      本篇就说 要通过XmlHttpRequest对象来实现实时的进度显示。      效果图:



      正文部分:

      看完某些前辈的做法是通过设置HTTP请求的Refresh头字段来定时刷新页面从而显示进度,某些越来越 就会带动整个页面一并刷新,就算我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 把进度条做成单独的页面,效果仍旧也有太好。我前一天试过用ajax的Timer组件,某些不知道是何意味着着,Timer控件在IIS下预览时老要无法正常发挥作用。苦恼了好一阵子,怀疑是MS的BUG。最后发现了另一个很好的替代办法就说 利用XmlHttpRequest对象来此人 实现定时刷新,越来越 每次只需向服务器请求很少的数据,减少了对服务器的压力,在后期的测试中,发现这俩 办法我觉得很好用,某些在IIS下也一切正常(上图就说 IIS下运行的效果)。

      当然机会光有进度条越来越数据,那这俩 进度条就说 能是个摆设,越来越来越多越来越来越多我把接下来的内容分成两块:进度信息的保存、进度的显示

      

      1、进度信息的保存

      首先我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 要明白进度条在这里反应的是那先 的进度?毫无问題图片是文件上传的进度喽~~在上一篇中,我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 对上传的文件数据进行了提取,也就说 说这俩 提取的进度就说 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 要显示给客户端的进度。那就简单了,我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 假若把机会提取的文件大小与总的文件大小比对一下,就不还还能不能知道完成的百分比了。越来越 问題图片来了,我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 怎么知道上传了2个了呢?答案肯定是要用另一个变量来保存机会上传的数据量。那这俩 变量要上放哪里不还还能不能我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 歌词 既不还还能不能在进度页面中访问,又不还还能不能在HTTP上传模块中访问呢?

      我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 肯定知道一般情况汇报下,用户在多个页面之间访问,会用到Session对象或URL传值来进行页面前一天的通信。某些前一篇所介绍的HTTP模块越来越来越多属于另一个页面,某些我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 无法简单的应用Session让进度页面与上传模块实现通信。这里主要还是借鉴高山来客的思路:首先构建另一个用于存放文件信息的类,该类主要用来保存文件信息,如:文件名,路径,当前上传的数据量,上传时间等。某些设置另一个针对某次上传的唯一ID做为页面中通信的暗号,拥有这俩 暗号的页面不还还能不能获取对应于某次上传的文件信息。现在机会有了另一个变量了,接着就要使这还还有一个变量不还还能不能被多个页面所使用,办法就说 在上传页面中,将这俩 ID变量注册为该页面的另一个隐藏域,越来越 所含这俩 页面的HTTP请求流中就会所含那个上传ID。越来越 类变量就保处在页面缓存Cache中,并用上传ID做为其编号。

      现在假设机会有了越来越另一个用于存放文件信息的类UploadFileInfo。

      首先我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 要在上传页面的PageLoad中new另一个ID,某些注册另一个隐藏域用来保存此ID,一并实例化UploadFileInfo类,并将相应的信息写入该类,最后把该类上放Cache:

      



      经过以上步骤,我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 就不还还能不能在HTTP模块中访问了。

      机会在这次的HTTP请求流中所含了另一个隐藏域,越来越来越多越来越来越多我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 不还还能不能对获取的HTTP请求流进行分析,从而获取相应的上传ID,也就说 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 前一天说的暗号。某些通过Cache的编号找到Cache中的文件信息对象,从而我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 不还还能不能在以后的数据读取过程中对该对象的上传数据量进行修改。机会是上放Cache中,加之是另一个引用对象,越来越来越多越来越来越多对该对象修改后,其它代码访问到的也有最新的值。



      其它页面机会要使用这俩 对象就得先获取ID,前一天就不还还能不能自由操作了。

      2、进度的显示

      从图中我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 不还还能不能看完,当显示进度的前一天,身后的页面成灰色,某些无法响应任何事件,特别相似模态窗口。这俩 效果我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 不还还能不能在网上查查,还是挺容易实现的。我这里有一段js显示此效果的代码(搜集于网上):

       到这就差越来越来越多整个专题都前一天刚刚刚刚刚开始 了,接下来几天,我会把代码稍微调整下,某些传上来。        机会这段时间要上班,我觉得抽沒有时间来收集,机会我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 须要不还还能不能先拿去看看。不过代码写的特别乱,某些某些功能也越来越完善,时间我觉得越来越来越多,我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 我们歌词 见谅。

       粗糙的工程