最近做在做一个项目,涉及到文件上传的问题. 以前也做过文件上传.但都是些小文件,不超过2m. 这次要求上传1g以上的东西. 没办法找来资料研究了一下. 基于web的文件上传可以使用ftp与http两种协议,用ftp的话虽然传输稳定,但安全性是个严重的问题,所以没有考虑. 剩下只有http. 在http中有3种方式,put.webdav.rfc1867,前2种方法不适合大文件上传,在这里也不说了.
但老外的东西也不是绝对完美,aspupload处理大文件后,内存占用情况惊人.1g左右都是稀松平常.我用的是3.0.0.3版.至于sa-file虽然是好东西但是破解难寻(郁闷死..) 失望之际,发现2款上传组件,lion.web.uploadmodule与aspnetupload,都是.net的,估计也是操作文件流.但是上传速度与cpu占用率都不如老外的商业组件. 【程序编程相关:基于MIDP实现ResourceBund】
确定使用rfc1867格式处理之后开始分析流行的上传组件.看了n多代码之后发现,目前无组件程序与一些com组件都是使用request.binaryread方法.一次性得到上传的数据,然后分析处理.这就是为什么上传大文件很慢的原因了,iis超时不说,就算1g文件上去了,分析处理也得一阵子. 之后我把注意力放在国外商业组件上,比较流行的有power-web,aspupload,activefile,abcupload,aspsmartupload,sa-fileup.其中比较优秀的是aspupload与sa-file,他们号称可以处理2g的文件(sa-file ee版甚至没有文件大小的限制),而且效率也是非常棒,难道编程语言的效率差这么多?(我的编程环境是vb6) 查了一些资料,觉得他们都是直接操作文件流.这样就不受文件大小的制约. 真是个好方法. 【推荐阅读:UniJa2.1声音播放问题(MIDI格】
做了个测试,lan内传1g的文件.aspupload上传速度平均是4.4m/s,cpu占用10-15,内存占用700m.... 下一页