利用.NET的File控件上传文件的最终解决方案(个人版)

翻译|其它|编辑:郝浩|2007-09-11 09:28:03.000|阅读 796 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

上传大文件,有好几种方法:

1、思归的  HttpWorkerRequest  方法,太难,看不懂:-(
2
、利用第三方的控件  AspNetUpload  要钱!!算了,咱还是喜欢免费的。
3
、修改  web.config  文件,但是不能捕获错误。
4
、通过  ftp  的方式上传。服务器需要提供  ftp  服务。

只有第三种方式合适!

修改  Webcong  文件:
<system.web>
<httpRuntime maxRequestLength="40690"
         useFullyQualifiedRedirectUrl="true"
         executionTimeout="6000"
         useFullyQualifiedRedirectUrl="false"
     minFreeThreads="8"
     minLocalRequestFreeThreads="4"
      appRequestQueueLimit="100"
      enableVersionHeader="true"
         />
</system.web>

其中与上传有密切关系的是:
maxRequestLength
  
指示  ASP.NET  支持的最大文件上载大小。
  
该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。
  
指定的大小以  KB  为单位。
  
默认值为  4096 KB (4 MB)

executionTimeout
  
指示在被  ASP.NET  自动关闭前,允许执行请求的最大秒数。
  
单位为秒,在上传大的文件时把这个设的大一些。


如果服务器内存512M,已可上传大小160M  的文件。

到这里  web.config  的设置就已经结束。
可是一旦上传文件的大小超过了这个设置的文件大小范围就会发生如下错误:

该页无法显示
您要查看的页当前不可用。网站可能遇到技术问题,或者您需要调整浏览器设置。

虽然解决不了,那也要捕获这个错误啊!怎么办呢?

由于这个错误是由  file  控件引发的前台错误,所以在后台想利用  try...catch  来捕获是行不通的。
于是想到了利用.NET  的错误捕获页面的机制来处理。可行哦。

1、先设置  web.config
  <customErrors mode="On"/>
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","<script language = javascript>alert('Upload file has failed ! File size is too large !')</script>");
     }
    }
   }
  
6
、搞定收工。

经过上述修改,现在的上传变成了,程序指定文件大小,如果超过,则弹出错误提示。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:csdn

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP