asp.net 上传服务器文件大小限制,Asp.Net 上传大文件专题(1)--概述:上传大文件的难点...

正文部分:

注意:以下红色部分字体说明该内容引用于微软的相关网站

因为要做一个视频网站,所以需要提供用户上传视频的功能。可是ASP.Net自带的上传控件只能用于上传小文件,这显然无法满足需要。有些朋友可能要问了"为什么需要用那个呀,直接FTP传不就好了",是的,用FTP传就方便了很多,但是FTP在用户上传后,无法对上传的文件进行在线编辑(比如格式转换,添加到数据库呀等),所有这些可以由网站自动完成的烦琐的任务则都将交由管理人员来完成,这对于一个商业网站来说无疑增加了用人成本。而且这些重复的低脑力活的工作,看起来就和体力活没什么区别,这不又从另一个侧面降低了我们这些IT人员的价值。扯远了,言归正传,那MS为什么要将这个上传控件的能力限制这么小呢?在MSDN以及微软的其它网站上我们可以了解到:"web.config 配置文件中的节的 maxRequestLength 参数的默认值为 4096 (4 MB)。所以,默认情况下不能上传大于这个值的文件。这也是为了防止拒绝服务攻击。"可是,这样一来就对我们上传大文件造成了麻烦。有些朋友可能发现既然限制上传文件大小是由于maxRequestLength 这个参数,那将这个值改大点不就OK了。的确,这样做便可轻轻松松提高文件上传大小的限制,可是在"上传过程中,ASP.NET 首先将整个文件加载到内存中,然后用户才可以将该文件保存到磁盘。"也就是说,如果用户上传的文件大小为100M,那么服务器的内存中就要拿出100M来存放用户上传的文件;如果是10个用户在同时上传,暂且不提并行性的问题,那10个用户就要占用1000M的内存;如果是100、1000、甚至是几万个用户呢?那么,再大的内存都不够你拿来提供用户上传的。

"另外,其他因素也会影响可以上载的最大文件大小。这些因素包括可用内存、可用硬盘空间、处理器速度和当前网络流量。对于上载的常规流量的文件,Microsoft 建议您让最大文件大小介于 10 到 20 MB 之间。如果您很少上载文件,则最大文件大小可以为 100 MB。"一个企业内部的视频网站,估且算它的日流量为1000人次,那么按照微软的建议,所上传的文件大小应尽量控制在20M以内,可是这样的大小还是很容易造成服务器的瘫痪,综合考虑后,我把大小控制在6M以内(为什么在这个范围,后面会有提到,提早告诉大家,是为了让文章能连贯一点)。大家一定会奇怪“一般一部视频大小都至少有个100~200M,小于6M的不多吧?” 是的,这个问题就是我们要解决的关键。在解决这个问题前,大家必须先清楚一件事,我们这里所说的文件大小"6M","200M"指的是针对服务器端而言呢,还是客户端而言呢?正确的理解如下:200M是针对客户端用户而言的大小,一般情况下允许用户上传最大600M大小的文件(这个600M是考虑到我服务器的硬盘大小,大家可以灵活掌握,不过一般最好不要超过1G);6M则指的是服务器端所能接收的文件大小,这样才能不让服务器的内存因为上传文件而被吞噬光。那么,现在我们就可以把问题转化为:如何让服务器以小于6M的大小来接收用户上传的200M视频的?大家是不是看得有点晕,那我拿“奥运会门票出售的情况”来举个例子。

这几天是出售奥运会门票的最后一个阶段,为了能在最后一阶段买到门票,很多人都提早好几天等在售票窗口前。我们假设有10W人需要门票(就好像用户上传200M的视频),理想的情况自然是开10W个窗口来出售门票(这里的窗口相当于服务器可以接收的文件大小,而10W则相当于我们将maxRequestLength等相关元素设置很大)。可是想一想就知道,这样做是不可能的(原因自己想吧~)。那怎么解决的呢?只有将窗口数按照某种规则限制在一定数量(比如20个),然后想买票的人排队买票。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值