收藏本站 收藏本站
积木网首页 - 软件测试 - 常用手册 - 站长工具 - 技术社区
积木学院 > 程序开发 > ASP > 正文

Asp无组件上传带进度条(续)

来源:互联摘选 日期:2005-12-28 11:36

几个月前,写过一篇关于Asp无组件上传带进度条的Blog,当时主要分析了一下通过Web文件上传并在后台获取分析数据的实现原理。其中实现进度条的根本就是要实现分块获取数据,根据分块大小和块数记录已上传大小。还有一些具体的细节问题当时并没有说清楚:

Q: 进度信息如何访问?
A: 进度信息保存在Application中,每次上传时生成一个进度ID,根据这个进度ID可以检索Application中的当前上传进度信息。

Q: 进度信息以什么形式保存在Application中?
A: Asp太弱了,我分别试过Scripting.Dictionary和XMLDom,但是Asp中Application不能保存这种对象,要是asp.net就直接可以用Hashtable了。最后是在Application中用一个ADODB.Recordset对象来保存进度相关信息。

Q: 怎么保证的页面能即时反应显示进度条信息?
A:
文件开头加上<%@enablesessionstate=false%>声明来关闭会话状态
要保证禁用缓存:
 Response.CacheControl = "no-cache"
 Response.Expires = -1

Q: 可以上传多大文件?
A: 这个和网速,服务器内存等多方面因素有关,将Server.ScriptTimeout设置足够长,那么理论上可以和服务器保持连接很长时间。因为在asp中,不能实现对文件的“追加”写入,必须将所有待写入文件的数据都先保存在内存,这样如果上传大文件,那么将很占用服务器内存(文本文件可以使用TextStream.Write追加写入)。在asp.net下就比较爽了,分块读取的时候,每读一块分析一块,然后将上传文件的数据内容“追加”写入硬盘文件中,对内存占用很小很小。一般几十MB的文件还是没问题,太大的上传其实对于web下也不是很有意义。

写了一个比较完善的实例,可以直接下载使用:

演示下载

http://www.webuc.net/MyProject/upload/upload.rar

推荐阅读

 

热点信息

 
强悍的草根IT技术社区,这里应该有您想要的! 友情链接:b2b电子商务
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP备05050695号