asp.net2.0 超大文件上传组件
asp.net 上传大文件会碰到许多不便,最好的做法是通过本文介绍的方法来做,速度快并且不容易出错。
原Webb.WAVE.Controls.WebbUpload参考文章,附源代码下载,本测试版暂无源码。
http://wucountry.cnblogs.com/archive/2006/06/14/306725.html
请先参考上面的内容。
新的WebbUpload2测试版:
上传过程:
上传完成,但文件正在COPY的时候。如果直接存放到指定目录,不另存文件,那么对于文件来说,可以省去很多时间(大概30秒)。
相关说明在下载文件内。
http://files.cnblogs.com/WuCountry/WebbUploadSample2.zip
测试报告文件:
http://files.cnblogs.com/WuCountry/Load%20test%20result.zip
下载文件说明:
1、只提供了WebbUpload2的测试版,即Debug版本。建议不应该在正式项目中使用这个测试版,因为本人在测试中遇到过很多问题,由于时间关系,还没来得及修改。本人会尽快修改一些BUG并尽快发布RELEASE版本。
2、免费组件。
3、请在使用该组件时注意:使用该组件过程中,不管什么原因造成的任何损失,由使用者自己负责,本人不负任何责任。
2006-07-06附上源码
说明:
1、添加源码:http://files.cnblogs.com/WuCountry/Webb.WAVE.Controls.Upload2.zip
2、添加上传日志。
3、添加上传开始时间。
4,修改一个BUG,特殊情况下临时缓存数据没能正确的写入到Context时去。
5、修改临时内存数据流,使内存占用大大降低。
6、公开免费组件,不提供任何技术支持,不负责任何使用该组件所造成的损失。
7、算法及组件流程分析可以参考下面的文章:
http://wucountry.cnblogs.com/archive/2005/10/12/305688.html
http://wucountry.cnblogs.com/archive/2005/11/07/305653.html (要研究算法,请先参考本文)
http://wucountry.cnblogs.com/archive/2005/11/07/305651.html
http://wucountry.cnblogs.com/archive/2005/11/07/305651.html
所有内容仅供参考!
2006-09-22修改了源代码。一此前发现的一些BUG已经修改。
资料来源:http://www.cnblogs.com/WuCountry/archive/2006/06/15/426535.html
原站点提供的Sample和源码项目似乎是用vs2003写的,直接在.net 2.0中运行报告错误,需要把项目转成vs2005,并修正一个小错误方能运行。本站提供转换好的项目文件下载(测试项目下载后可以直接作为网站运行):
测试项目:http://www.ljf.cn/download/WebbUploadSample2.1.rar
源码项目:http://www.ljf.cn/download/Webb.WAVE.Controls.Upload2.1.rar
2010年3月3日补充:
使用了这个超大文件上传组件之后,不能再使用Request.Files来接收上传文件。这可能导致一些原来使用asp.net默认上传机制的页面不能使用。有人反映:
137楼:请解决问题!我的项目中有多处需要上传,我在上传文件的地方用了你的控件,但是其他地方用的.NET自带控件,然后.net自带的控件就不起作用了.说postedfile对象为空.空引用``为什么```急
作者说:
138楼:因为在HttpContent里已经把上传的文件转移到另一个地方去了。
我记得在我的控件里有一个选项可以禁用它的,因为长时间没有管这个控件了,所以记的不是很清楚了。
你可以试着修改一下源代码,完成你想要的功能。
对于这个控件中的一些使用不方便的地放,或者一些错误给大家带来的麻烦深表谦意。
根据作者提供的思路,我做了一下修改,使得默认的上传功能不受影响。方法是通过配置web.config文件,添加一个appSettings,如下:
<add key="iswebb_pages" value="singlefileupload.aspx,multifileupload.aspx"/>
配置需要使用该组件的页面。原理是判断上传页面的文件名是否在配置中,如果不包含在配置文件中则使用普通的上传方式。
下面是我修改过的版本:
源码:http://www.ljf.cn/download/Webb.WAVE.Controls.Upload2.1.1.rar
实例:http://www.ljf.cn/download/WebbUploadSample2.1.1.rar
实例中用户测试大文件上传的页面是 singlefileupload.aspx,用于测试默认的asp.net上传方式的文件是 SingleFileUpload2.aspx。