解决上传文件大小限制问题

我们知道在默认的情况下ASP.NET的文件的上传大小为2M,一般情况下,我们可以采用更改web.config方式来定义最大文件的大小,如下: 

 

 

<httpRuntime executionTimeout="300" maxRequestLength="40960" useFullyQualifiedRedirectUrl="false" />

 

 

但是这样并不能无限制的扩大,因为ASP.NET会将全部的文件载入到内存后再进行处理。

      

解决方法是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody和ReadEntityBody方法从IIS为ASP.NET建立PIPE里面分块读取。

 

如下:

       

void test()
{
IServiceProvider provider 
= (IServiceProvider)HttpContext.Current;
HttpWorkerRequest wr 
= (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));

byte[] bs = wr.GetPreloadedEntityBody();
if(!wr.IsEntityBodyIsPreloaded())
{
int n = 1024;
byte[] bs2 = new byte[n];
while(wr.ReadEntityBody(bs2,n)>0)
{
   
//取得资料
}

}

}
posted @ 2008-07-22 22:13  芙蓉客  阅读(462)  评论(0)    收藏  举报