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

提出问题:

如果使用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管理文件才是最终的解决办法

NGINX 是一个高性能的开源反向代理服务器,它也可以用作文件上传服务器。当上传超大文件时,可能会遇到上传超时的问题。为了解决这个问题,可以通过以下几种方法进行处理。 1. 调整 NGINX 配置参数:可以通过修改 NGINX 配置文件中的 `client_max_body_size` 字段来增加允许上传的文件大小限制。可以将其设置为适当的值,以适应所需的上传文件大小。 2. 增加上传超时时间:默认情况下,NGINX 对于文件上传的超时时间是 60 秒。可以通过修改 NGINX 配置文件中的 `client_header_timeout` 和 `client_body_timeout` 字段来增加上传的超时时间。可以将其设置为适当的较高值,以确保上传足够大的文件时不会超时。 3. 加大服务器资源:如果上传非常大的文件,可能是服务器资源不足导致的超时问题。可以尝试增加服务器的 CPU、内存和网络带宽等资源,以提高服务器的处理能力。 4. 使用分片上传:如果文件非常大,可以考虑将文件分片上传。客户端将文件分成多个较小的块,并分别进行上传。服务器端可以接收到每个块后进行处理,并在所有块上传完成后再将它们合并为完整的文件。这样可以减少单次上传的时间和服务器的负载。 总之,根据具体的情况,可以通过调整 NGINX 配置参数、增加上传超时时间、加大服务器资源和使用分片上传等方法来解决 NGINX 上传超大文件超时的问题
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值