首先,在Global.asax.cs中实现Application_BeginRequest方法,实例HttpWorkerRequest wr = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest))来获取web.config中的maxLength长度,同时开辟一个内存wr(大小为maxLength);然后用GetPreloadedEntityBody()方法获取上传的文件的内容。对文件内容长度进行判断,如果文件大于2MB(request.ContentLength > 2097152),则用ReadEntityBody()方法读取文件的n个字符,读入wr中,当读入的数据〉wr的大小时,Maximum request length exceeded异常触发。
于是在Global.asax.cs中实现Application_Error方法,判断如果获得的异常type为Maximum request length exceeded,则定位到错误页面(Error.asp)页面内容“上传的文件太大”。

void Application_BeginRequest(object source, EventArgs e)
        {
              IServiceProvider provider = (IServiceProvider) HttpContext.Current;
              HttpWorkerRequest wr = (HttpWorkerRequest) provider.GetService(typeof(HttpWorkerRequest));
              byte[] bs = wr.GetPreloadedEntityBody();
             
              HttpRequest request = HttpContext.Current.Request;
              if (request.ContentLength > 2097152)
              {
                  if (!wr.IsEntireEntityBodyIsPreloaded())
                  {
                      int n = 65535;
                      byte[] bs2 = new byte[n];
                      while (wr.ReadEntityBody(bs2, n) > 0)
                      {
                      }

}
                  //Response.Redirect("~/About.aspx");
              }
        }

void Application_Error(object sender, EventArgs e)
        {
            // Code that runs when an unhandled error occurs
            Exception exc = Server.GetLastError();
 
            // Handle HTTP errors
            if (exc.GetType() == typeof(HttpUnhandledException))
            {
                if (exc.InnerException.Message.Contains("Maximum request length exceeded."))
                    Response.Redirect("~/Error.aspx");

//exc.InnerException.
            }
        }

上传文件太大(处理)相关推荐

  1. springboot上传文件过大,全局异常捕获,客户端没有返回值

    springboot上传文件过大,全局异常捕获,客户端没有返回值 参考文章: (1)springboot上传文件过大,全局异常捕获,客户端没有返回值 (2)https://www.cnblogs.co ...

  2. php大图片接口上传慢,七牛php sdk上传文件太慢

    问题描述 上传同一个文件(32kb)有时候需要2s,但有时候需要11s,上传速度太不稳定,且太慢. 上传的过程是由前端上传文件到后端php(使用yii2框架)的接口,由php调qiniu的sdk上传方 ...

  3. formdata上传文件_大文件分片断点上传实现思路以及方案

    作者:yeyan1996| 来源:掘金https://juejin.im/post/5dff8a26e51d4558105420ed 前言 我在面试的时候确实被问到了这个问题,而且是一道在线 codi ...

  4. 移动端上(传图片太大)处理方案

    利用FileReader和FormData实现图片预览和上传(base64转二进制文件) 监听表单文件变化 文件表单的样式主要通过让它后面,通过别的DOM来美化它. <input type=&q ...

  5. php文件断点上传文件,php大文件上传支持断点上传

    一个php大文件上传案例,可以支持断点续传,暂不支持文件上传演示 难易:中级 下载资源 下载积分: 200 积分 /** * 配置文件(如果没有默认字样,说明默认值就是注释下的值) * 但是,on*( ...

  6. 海外服务器上传文件太慢,怎么办?

    美国服务器不论在国内还是国外都十分受用户喜爱,针对国内用户而言,使用最广泛的莫过于外贸网站.但因为距离原因,许多网站在上传文件时会出现速度缓慢的问题,今天咱们就围绕这个话题来说明解决一下. 美国服务器 ...

  7. HTTP Content-Type (MIME) el-upload文件、图片上传 | 文件改名 | 大文件 | 文件下载

    MIME 为数据格式标签:最初 MIME 是用于电子邮件系统的,后来 HTTP 也采用了这一方案. 在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息. Conten ...

  8. java多线程上传文件_Java大文件分片上传/多线程上传

    这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...

  9. MobaXterm上传文件后大小为0kb或者非常大

    原因: 本地文件所在的绝对路径里有中文 解决: 文件放桌面或者把路径里的中文改掉再上传 如果路径中没有中文还是不行的话,点开session 建一个sftp连接,ip,用户,端口和密码都和ssh连接一样 ...

最新文章

  1. 修改windows cmd f2快捷_第三课——win10常用快捷键的使用
  2. 金蝶云如何html5登录,第三方系统单点登录到金蝶云指南V2
  3. go语言中及格比较特殊的switch语法
  4. 【NLP】基于深度学习的文本分类应用
  5. 挂“洋头”卖奶粉,澳优还要欺骗好久
  6. java集合是wftc_java的集合是什么?
  7. [APUE]进程控制(中)
  8. PyCharm 重构(refactor)快捷键
  9. PageAdmin网站建设教程:仿58同城站群系统实现不同地区Ip跳转不同分站
  10. adb获取剪贴板内容_Android复制粘贴剪切板内容的一种方法
  11. Cocos creator接 IOS 穿山甲
  12. PR/PO一锅粥,关键信息一图兜
  13. MATLAB/simulink仿真 光伏蓄电池恒流恒压充电 系统启动运行在恒流充电模式
  14. MATLAB在安装时需要选择安装的产品
  15. Modern Data Stack 下 Data Integration 生态(下)
  16. 服务器定时任务是通过什么样的方式实现的
  17. mysql开发语言,纯干货
  18. “云网融合”关键在产业携手共进
  19. Android基础之Fragment
  20. A002-185-2530-吴伟滨

热门文章

  1. MySQL_高性能存储引擎:TokuDB初探
  2. 做测试10年,测试工程师需要考什么证加薪?
  3. numpy之 警告VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences
  4. 深入Java微服务之网关系列1:什么是网关
  5. 误删sd卡文件怎么恢复
  6. PHP获取前天和昨天日期
  7. 微信小程序 社区居民健康疫情服务系统
  8. 714-CPU 是如何理解 01 二进制的?
  9. 2023最值得推荐的电脑数据迁移方法,一键转移文件和程序
  10. 使用VUE+SpringBoot+EasyExcel 整合导入导出demo