当我们在学习使用C#时会遇到传大文件的需要,解决用.NET的File控件上传文件的问题有以下4中方法,本文我给大家介绍第3种,希望能给大家带来帮助。 1、思归的HttpWorkerRequest方法。 2、利用第三方的控件 AspNetUpload 3、修改web.config文件,但是不能捕获错误。 4、通过ftp的方式上传。服务器需要提供ftp服务。
修改Webcong文件: 以下为引用的内容:
useFullyQualifiedRedirectUrl="true" executionTimeout="6000" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true" />
其中与上传有密切关系的是: maxRequestLength 指示 ASP.NET 支持的最大文件上载大小。 该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。 指定的大小以 KB 为单位。 默认值为 4096 KB (4 MB)。
executionTimeout 指示在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。 单位为秒,在上传大的文件时把这个设的大一些。 如果服务器内存512M,已可上传大小160M的文件。(没试过,csdn上众帖子的一致意见。) 到这里web.config的设置就已经结束。 可是一旦上传文件的大小超过了这个设置的文件大小范围就会发生如下错误: 该页无法显示
您要查看的页当前不可用。网站可能遇到技术问题,或者您需要调整浏览器设置。 虽然解决不了,那也要捕获这个错误啊!怎么办呢? 于是想到了利用.NET的错误捕获页面的机制来处理。可行哦。 以下为引用的内容: 1、先设置web.config
2、新建一个error.aspx 文件,专门用来捕获错误的。 3、在上传文件的aspx页面的前台页面里添加page指令。ErrorPage="UploadError.aspx" 4、在error.aspx中添加一些代码来判断错误信息是否是file引起的前台错误。 public class UploadError : System.Web.UI.Page { private void Page_Load(object sender, System.EventArgs e) { Exception ex = Server.GetLastError(); if (ex != null) { Response.Redirect("../error.aspx"); } else //前台错误ex为空值 { Response.Redirect("uploadexcel.aspx?err=1"); //重新跳转到上传页面, 加上err参数是为了显示错误信息 } }
5、显示错误提示。 public class uploadexcel : System.Web.UI.Page { private void Page_Load(object sender, System.EventArgs e) { if (Request["err"] == "1") { Page.RegisterStartupScript("budget",""); } } } |