用ASP.NET上传大文件

转载 2004年07月06日 11:14:00

思归呓语http://blog.joycode.com/saucer/posts/16225.aspx

我们在上传大文件时都遇到过这样或那样的问题。设置很大的maxRequestLength值并不能完全解决问题,因为ASP.NET会block直到把整个文件载入内存后,再加以处理。实际上,如果文件很大的话,我们经常会见到Internet Explorer显示 "The page cannot be displayed - Cannot find server or DNS Error",好像是怎么也catch不了这个错误。为什么?因为这是个client side错误,server side端的Application_Error是处理不到的,可以参考这个帖子研究一下产生这个错误的机理。

handling server error when upload file too large

解决的方法是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法从IIS为ASP.NET建立的pipe里分块读取数据

  IServiceProvider provider = (IServiceProvider) HttpContext.Current;
  HttpWorkerRequest wr = (HttpWorkerRequest) provider.GetService(typeof(HttpWorkerRequest));
  byte[] bs = wr.GetPreloadedEntityBody();
  ....
  if (!wr.IsEntireEntityBodyIsPreloaded())
  {
        int n = 1024;
        byte[] bs2 = new byte[n];
        while (wr.ReadEntityBody(bs2,n) >0)
       {
             .....
        }
  }

Chris Hynes为我们提供了这样的一个方案(用HttpModule),该方案除了允许你上传大文件外,还能实时显示上传进度:

ASP.NET Upload Magic Part 2

这里有他讲座的PPT文件:

Uploading with ASP.NET (part 1)

Uploading with ASP.NET (part 2)

ASP.Net大文件上传组件详解

首先右键单击网站根目录,在弹出的快捷菜单中,选择"添加引用"菜单项,弹出"添加引用",切换到"浏览"找到组件的Dll文件"Bestcomy.Web.Controls.Upload.dll"(本文件可到...
  • yf505261213
  • yf505261213
  • 2013年09月11日 10:09
  • 3472

ASP.NET大文件断点上传

前端代码 //全选 function CheckAll(e, itemname) { var aa = docume...
  • KingCruel
  • KingCruel
  • 2013年02月17日 09:54
  • 3776

在ASP.NET MVC中实现大文件异步上传

在ASP.NET中通过HTTP上传大文件是一个由来已久的挑战,它是许多活跃的ASP.NET论坛最常讨论的问题之一,除了处理大文件外,用户还 经常被要求要显示出文件上传的进度,当你需要直接控制从浏览器上...
  • sven_xu
  • sven_xu
  • 2015年06月02日 09:21
  • 962

asp.net大文件分块上传视频教程

我们平时做业务系统的时候,一般都会使用表单提交数据,提交数据的时候常常又伴随着附件的上传,如果附件小,用传统的办法就能解决,如果附件比较大,比如板给你安排一个上传视频的任务,视频文件一般都比较大,动不...
  • tangyan1207
  • tangyan1207
  • 2017年07月10日 22:59
  • 388

设置webconfig解决ASP.NET上传文件大小限制

使用webconfig的设置解决ASP.NET上传文件大小限制 对于asp.net,默认只允许上传4M文件,增加如下配置,一般可以自定义最大文件大小. //executio...
  • u013938578
  • u013938578
  • 2017年12月20日 13:03
  • 44

ASP.NET文件上传大小II限制修改

我们大家都知道ASP.NET为我们提供了文件上传服务器控件FileUpload,默认情况下可上传的最大文件为4M,如果要改变可上传文件大小 限制,那么我们可以在web.config中的httpRunt...
  • apple151128
  • apple151128
  • 2015年08月21日 16:09
  • 328

实现NeatUpload大文件上传和个性显示进度条

一、概述     放清明假啦,宿舍的人都差不多走完了,就留下一两个宅男还在宿舍搞基。在这无聊之际,没有什么事可做,又不想把时间浪费在看视频,打游戏之类。想了想,于是就着手总结一下上次有用到的一个开源...
  • u014348368
  • u014348368
  • 2014年04月05日 01:54
  • 3143

ASP.NET上传大文件的构想

前面研究了一下ASP.NET的进程模型,实际上就是为了“上传大文件”这个最终目的服务的。 大文件上传的可行性研究 互联网的应用从狭义上,或许可以看成“Request-and-Respons...
  • pingqingbo
  • pingqingbo
  • 2014年04月16日 17:06
  • 467

ASP.NET大文件上传详解

 做web开发的都知道,在Web程序中上传文件是很常见的需求。 利用HTTP协议上传文件的方式非常有限,一般使用〈input type="file" / 〉标签来进行上传。 这种上传方式会将...
  • dqccsdn
  • dqccsdn
  • 2014年11月16日 12:47
  • 262

asp.net分块上传大文件

转自 http://blog.163.com/soldier_200/blog/static/1552123320091115319532/ sp.net分块上传大文件 1.一般的在A...
  • shouhou_Bingo
  • shouhou_Bingo
  • 2016年08月04日 17:09
  • 347
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用ASP.NET上传大文件
举报原因:
原因补充:

(最多只允许输入30个字)