建
好后,一次Write一部分,分多次Write,这样的好处是不会占用服务器内存空
间,结合上面分析的分块获取数据原理,我们可以每获取一块上传数据就将之
Write到文件中。我曾做过试验,同样本机上传一个200多MB的文件,使用第一
种方式内存一直在涨,到最后直接提示
计算机虚拟内存不足,最可恨是即使进
度条表示文件已经上传完,但是最终文件还是没有保存上。而使用后一种方法
,上传过程中内存基本上无什么变化。
四、未解决的难题
我在博客园上看到Bestcomy描述他的Asp.Net上传组件是可以和Sever.SetTime
Out无关的,而在
Asp中我是没能做到,对于上传大文件,就只有将Server.Set
TimeOut设置为一个很大的值才可以。不知道有没有比较好的解决方法。
如果我们在保存
文件时,使用TextStream对象的Write方法,那么如果用户上
传时中断了文件传输,已经上传的那部分文件还是在的,如果可以断点续传就
好了。关键问题是Request.BinaryRead方法虽然可以分块读取,但是却不能跳
过某一段读取!
五、结束语
原理基本上是说清楚了,但是实际代码要比这复杂的多,要考虑很多
问题,最
麻烦在分析数据那部分,对于每一块获取的数据,要分析是不是属于描述信息
,是表单项目还是上传的文件,文件是否已经上传结束……
相信根据上面的描述,您也可以开发出您自己功能强大的无组件上传组件。我
想更多的人关心的只是代码,而不会自己动手去写的,也许没有时间,也许水
平还不够,更多的只是已经成为了一种习惯……我在CSDN上见过太多技术八股
文——一段说明,然后全是代码。授人以鱼不若授人以渔,给你一个代码,也
许你并不会去思考为什么,直接拿去用,当下次碰到类似的问题的时候,还是
不知道为什么,希望此文能让更多人学到点什么,最重要是悟到点什么!
作者: 210.22.253. 2006-9-18 1634 回复此发言
--------------------------------------------------------------------------------
3 回复:asp上传文件代码详解
来个更详细的.
利用ASP技术实现文件直接上传功能
引言
采用WEB技术实现BS(浏览器服务器)结构的管理系统是办公自动化的发展趋势。基于WEB技术的
管理系统,由于开发周期短;与用户平台无关;易于实现交互式应用;能对信息进行快速、高效的收集、处理和发布,近几年来得到了迅速发展。而ASP技术由于其开发效率高、交互性好,安全性强等特点,逐渐成为开发管理
系统的首选工具。
许