用Asp.net 传送大文件

原创 2004年06月27日 08:40:00

我们在上传大文件时都遇到过这样或那样的问题。设置很大的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大文件分块上传视频教程

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

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
  • 3777

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

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

MFC大文件传输

MFC大文件传输 MFC大文件传输核心思想(C/C++程序员之家自己研究的,请大家指出不当之处,以便更正): 首先先给下CSDN上论坛对TCP大文件传输的讨论: TCP发送端速度过快,有可能造成...
  • u014093935
  • u014093935
  • 2014年04月04日 10:33
  • 551

ASP.NET WebAPi(selfhost)之文件同步或异步上传

同步上传 多余的话不用讲,我们直接看页面。 class="container"> @if (ViewBag.Success != null) { ...
  • n9nzjx57bf
  • n9nzjx57bf
  • 2017年05月17日 09:44
  • 301

C# 大文件分段上传,下载

1》客户端 分段上传方法 public static readonly int G_BLOCK_LEN_PER = 2 * 1024 * 1024; private vo...
  • u010279498
  • u010279498
  • 2017年03月07日 16:25
  • 2044

利用MQ实现大文件交换

本文介绍了如何利用ActiveMQ提供的机制,实现大文件断点续传,从而可以在低速网络的情况下,不会因为网络的故障而使整个大文件重新传输。本文介绍的这个实现可以大大的提高业务处理效率,并且可以对本文提供...
  • wxyFighting
  • wxyFighting
  • 2013年04月29日 11:38
  • 1939

两台电脑间传送大文件(网线互连方法)

1.      用网线把两台机器互联。 2.      选择要分享的文件所在磁盘,右击选择共享----高级共享---高级共享---选中共享次文件夹—确定。   3.      查看文件所在计算机的...
  • u013162562
  • u013162562
  • 2016年09月18日 22:00
  • 2465

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

我们大家都知道ASP.NET为我们提供了文件上传服务器控件FileUpload,默认情况下可上传的最大文件为4M,如果要改变可上传文件大小 限制,那么我们可以在web.config中的httpRunt...
  • apple151128
  • apple151128
  • 2015年08月21日 16:09
  • 329
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Asp.net 传送大文件
举报原因:
原因补充:

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