在上传文件时,我们可以在web.config里设置允许上传的文件大小。但是,当上传的文件超过设置的限制时,在Application_Error事件里是无法捕捉到这个异常的。下面,就是捕捉上传文件超过设置大小的方法:
首先,在web.config里设置允许一次上传的文件的总大小;

Web.config 文件 <httpRuntime maxRequestLength="400" executionTimeout="3600" appRequestQueueLimit="10000"/>

其次,在Global里加入如下的代码:

<%@ Application Language="C#" %> <%@ Import Namespace="System.Web.Configuration" %> <mce:script RunAt="server"><!-- protected void Application_BeginRequest(object sender, EventArgs e) { //本代码的功能是检查页面请求的大小,如果超过了配置文件maxRequestLength的设定值,就提示用户超过了所允许的文件大小。 //从配置文件里得到配置的允许上传的文件大小 HttpRuntimeSection runTime = (HttpRuntimeSection)WebConfigurationManager.GetSection("system.web/httpRuntime"); //maxRequestLength 为整个页面的大小,不仅仅是上传文件的大小,所以扣除 100KB 的大小, //maxRequestLength单位为KB int maxRequestLength = (runTime.MaxRequestLength - 100) * 1024; //当前请求上下文的HttpApplication实例 HttpContext context = ((HttpApplication)sender).Context; //判断请求的内容长度是否超过了设置的字节数 if (context.Request.ContentLength > maxRequestLength) { //得到服务对象 IServiceProvider provider = (IServiceProvider)context; HttpWorkerRequest workerRequest = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest)); //检查请求是否包含正文数据 if (workerRequest.HasEntityBody()) { //请求正文数据的长度 int requestLength = workerRequest.GetTotalEntityBodyLength(); //得到加载的初始字节数 int initialBytes = 0; if (workerRequest.GetPreloadedEntityBody() != null) initialBytes = workerRequest.GetPreloadedEntityBody().Length; //检查是否所有请求数据可用 if (!workerRequest.IsEntireEntityBodyIsPreloaded()) { byte[] buffer = new byte[512000]; //设置要接收的字节数为初始字节数 int receivedBytes = initialBytes; //读取数据,并把所有读取的字节数加起来,判断总的大小 while (requestLength - receivedBytes >= initialBytes) { //读取下一块字节 initialBytes = workerRequest.ReadEntityBody(buffer, buffer.Length); //更新接收到的字节数 receivedBytes += initialBytes; } initialBytes = workerRequest.ReadEntityBody(buffer, requestLength - receivedBytes); } } //请求重定向到上载页面,并给用户提示信息。 context.Response.Redirect(this.Request.Url.LocalPath + "?error=" + Server.UrlEncode("您上传的文件超过了允许的大小。")); } } // --></mce:script>

最后,上传的页面设置如下:

<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <mce:script runat="server"><!-- protected void Button1_Click(object sender, EventArgs e) { FileUpload1.SaveAs(Server.MapPath("~") + "//" + System.IO.Path.GetFileName(FileUpload1.FileName)); err.Text = ""; } protected void Page_Load(object sender, EventArgs e) { if (!String.IsNullOrEmpty(Request.QueryString["error"])) { err.Text = Server.HtmlEncode(Request.QueryString["error"]); } } // --></mce:script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server" action="?"> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上载" /> <div><asp:Label ID="err" runat="server" ForeColor="Red"></asp:Label></div> </form> </body> </html>

转自孟子E章 - 原文连接http://dotnet.aspx.cc/file/Catch-maxRequestLength-Exceptions-When-Uploading-File-in-ASPNET.aspx

在上传文件时限制上传文件的大小,并捕捉超过文件大小限制的异常相关推荐

  1. 第十一章:实现SpringBoot单个、多个文件的上传

    在企业级项目开发过程中,上传文件是最常用到的功能.SpringBoot集成了SpringMVC,当然上传文件的方式跟SpringMVC没有什么出入.下面我们来创建一个SpringBoot项目完成单个. ...

  2. 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录

    将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...

  3. php上传图片到文件夹,2018.09.14PHP获取页面上传的图片存到指定文件夹再存到数据库中...

    一.html代码 //传值方式必须是post 请选择要上传的文件: 二.php代码 session_start(); include 'mysql.php'; //获取图片所有的属性 $filenam ...

  4. php dw文件上传下载,使用PHP实现文件上传

    这里使用PHP实现文件的上传,由在浏览器这边选择文件,上传到服务器.其中,在上传文件中,考虑到对上传文件大小的限制.类型限制等问题.(当然可以根据我们需要修改对上传的文件的限制,而一般而言php自身也 ...

  5. java上传加密_Java上传下载文件并实现加密解密

    使用 Jersey 服务器实现上传,使用 HTTP 请求实现下载 引入依赖 在 pom.xml 中添加 Jersey 相关依赖 com.sun.jersey jersey-client 1.18.1 ...

  6. 文件夹内多文件上传到服务器

    文件夹上传至服务器 希望可以给你一点帮助 直接上代码 jsp页面 <div style="text-align:center; vertical-align:middel" ...

  7. sftp shell 批量上传文件_Shell自动上传下载文件到SFTP服务器

    1.说明 本文提供一个Shell脚本, 可以自动连接到SFTP服务器, 然后上传或者下载指定的文件, 进而可以使用Linux的corntab命令, 定时执行脚本上传下载文件, 实现文件的同步或者备份功 ...

  8. C# 文件操作(上传 下载 删除 文件列表...)

    using System.IO;      1.文件上传   ----------   如下要点:   HTML部分:   <form id="form1" runat=&q ...

  9. 大文件上传服务器:支持超大文件HTTP断点续传的实现办法

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 来源:blog.csdn.net/ababab12345/a ...

最新文章

  1. RabbitMQ(十):RabbitMQ 如何保证消息的可靠性
  2. JAVA语法——汉诺塔问题
  3. 2013-07-22 IT 要闻速记快想
  4. Python基础教程:copy()和deepcopy()
  5. 怎么查看kudu的版本_apache版本kudu kudu-impala安装方法
  6. ASP.NET页面解析(3)
  7. 今晚直播丨管中窥豹 - PostgreSQL、openGauss、达梦和OceanBase的初步介绍
  8. tensorflow2.0 图像处理项目_航天泰坦丨国产自主遥感图像处理软件当自强
  9. shellshock漏洞回顾
  10. c语言计算器括号怎么解决,C语言计算器,该如何解决
  11. c# 图像识别 车辆型号【百度AI】
  12. 不同尺度下耕地土壤Cr含量的空间自相关性分析
  13. html图片加载不出来,图片相对路径问题
  14. 记录archlinux第n次修复引导区
  15. Long源码与常见问题
  16. SVN使用教程(一)
  17. snmp trap发送及接收
  18. 【web项目】前端生日礼物--clock篇
  19. 智能群算法的CEC2017测试集 纯matlab版以及matlab与C++版 代码以及详细使用说明
  20. 是谁在我的心里打了个结(二十六)乱七八糟

热门文章

  1. 那些让你敬佩万分奉若圭臬的话,你认为有哪些?
  2. Vue+Element实现网页版个人简历系统
  3. Pytorch 数据预处理
  4. c# 网络编程之http
  5. 2013 一路走过--- 续2
  6. 华为畅享8plus停产了吗_学生换机不要盲目 华为畅享8 Plus最值得一看
  7. 林志颖的个人履历,佩服的五体投地!
  8. 操作系统学习之用C语言模拟FIFO算法
  9. 【九天·毕昇】一个免费获得GPU的算力平台
  10. python代码手机壁纸_大神教你如何用Python爬取手机壁纸,就是这么为所欲为!