要利用HTML控件下的Input(File)以及一个提交按钮来实现一个简单的文件上传功能,简单设计如下图:
上传按钮的代码如下:
protected void btnUpLoad_Click(object sender, EventArgs e)
{
string fullFileName=this.File1 .PostedFile .FileName ;
string fileName = this.File1.PostedFile.FileName.Substring(fullFileName.LastIndexOf("\\") + 1);
this.File1.PostedFile.SaveAs(Server .MapPath ("up")+"\\"+fileName );
}
当选择的上传文件比较小的时候,是可以正常上传的,但是一旦文件比较大时,就会出现如下图的错误:
于是,按照提示以及百度搜索,在web.config文件中的<system.webServer>节点下增加以下内容:
<security>
<requestFiltering >
<requestLimits maxAllowedContentLength ="1024000000"></requestLimits>
</requestFiltering>
</security>
然而,还是会出现问题,如下图:
于是,配置最大请求长度,在<system.web>节点下添加以下内容:
<httpRuntime maxRequestLength ="1024000000" appRequestQueueLimit ="100" useFullyQualifiedRedirectUrl ="true " executionTimeout ="120"/>
然而,再次出现问题了,如下图:
这次,把maxRequestLength的值改为“2097151”,一般情况下,将maxAllowedContentLength的值与maxRequestLength的值的值设置为一样的,这时候请注意它们各自的单位,使maxAllowedContentLength=“2147483647”,这样就可以上传大文件了,但是大文件传输的速度却非常慢。
总结:
httpRuntime 配置 ASP.NET HTTP 运行时设置,以确定如何处理对 ASP.NET 应用程序的请求。
maxRequestLength (指示 ASP.NET 支持的最大文件上载大小),指定输入流缓冲阈值限制(以 KB 为单位)。此限制可用于防止拒绝服务攻击;例如,因用户向服务器发送大型文件而导致的拒绝服务攻击。默认值为 4096 (4 MB),最大值只能是2097151KB(大约2G)。
maxAllowedContentLength属性,以字节为单位,是想要启用的附件的大小。默认 30000000B,约30M。
感谢您的阅读~