蛙蛙推荐:大文件上传问题,整理自csdn论坛

来源:互联网 发布:网络运营方案 编辑:程序博客网 时间:2024/06/01 16:49

提出问题:

如果使用asp.net上传文件,服务器是把文件先存到内存,等上传完毕在存到磁盘。
假如:如果上传1G的文件的话,就会出现服务器内存不够,性能大幅度下降。我的想法是通过一边上传一边保存到磁盘的方法来解决问题,但遇到这样的问题:获取到的数据流是上传完毕的数据流。

-----
传大文件不适合直接在asp.net中用<input type=file>进行

要写成一个activex控件, 嵌入在aspx页面

此控件完成文件上传:

1. 把要上传的文件分割成小的包, 文件名如: guid-1.m, guid-2.m

2. 写配置文件,记录文件名,及总的包数, 包的大小

3. 控件依次上传文件,服务端要接收后判断传过来的参数, 总包数等于当前第几包的时候, 把文件组合

4. 用web上传1g内容要很长时间, <processModel>的deallock时间要设得很长, Web.config中的httpRuntime一节也要进行设置
-----
默认只能上传4M的文件,要想上传更大的文件需要在web.config中设置就
<httpRuntime useFullyQualifiedRedirectUrl="true"
            maxRequestLength="819200"
            executionTimeout="900"/>
-----
在WEB上用ACTIVEX控件,用户上传的目录等都是定的,对用户来讲其实和WEB上传一样呀,在WEB上选择一个上传文件,管理还是和完全用WEB来传一样。,我觉得没什么不妥呀,FTP又稳定,为什么不采用呢?

用VB做一个FTP的ACTIVEX是很简单的事情,网上也很多,有些可以直接拿来用,界面稍微修改下就成了。
-----
在/Microsoft.NET/Framework/v1.0.3705/CONFIG/machine.config文件中,定位maxRequestLength,改变其值为你需要的值,如
maxRequestLength="10240",表示可以上传10M的文件
-----
B/S结构下很难以实现文件的续传,如果实在是速度慢,不防开一个后台线程来上传。
-----
个人认为用c/s方式上传文件,用b/s管理文件才是最终的解决办法