`
varsoft
  • 浏览: 2437850 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

用Asp.net 传送大文件

阅读更多

Chris Hynes

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

分享到:
评论

相关推荐

    WEBUPLOAD大文件传送C# asp.net

    WEBUPLOAD大文件传送C# asp.netWEBUPLOAD大文件传送C# asp.netWEBUPLOAD大文件传送C# asp.net

    Socket文件传输源码 asp.net版

    Socket文件传输源码 asp.net版Socket文件传输源码 asp.net版Socket文件传输源码 asp.net版Socket文件传输源码 asp.net版Socket文件传输源码 asp.net版

    asp.net在线压缩文件

    网络传输文件过程中,如果文件过大将会影响文件传送的效果和速度,如果将文件压缩之后再上传,不但可以提高传送速度,还可以节省大量的时间。本实例通过asp.net web应用程序中实现了文件的在线压缩功能。 本实例主要...

    asp.net文件传输(客户端,服务器)

    asp.net网络通信的例子,值得好好学习

    asp.net开发常用整理集合

     Asp.net中My97DatePicker4.2日期的使用  Asp.net中DataList控件添加删除  Asp.net获取请求的用户信息IP地址  获取世界IP地址库显所在城市信息  MySQL事务处理  SQL内部常用函数  为gridview“删除”...

    ASP.NET网站设计实例通

    本书现场构建了一个完整的Internet网站,全书共分为10章...第10章是ASP.NET的进阶内容,讲解文件上传和E-mail的自动传送功能。本书可以作为ASP.NET程序设计人员的参考资料,也可以作为网站建设及维护人员的培训班教材

    《ASP.NET网站设计实例通》

    本书旨在引导读者深入ASP.NET的精髓,使读者迅速掌握用ASP.NET构建一个完整站点的技能。本书现场构建了一个完整的 Internet网站,全书共分为10章,第1章讲解基本概念,内容包括ASP.NET的设计理念和运行模型。第2章...

    asp.net大文件上传示例代码-access-gb2312

    考虑到不同的企业使用的开发平台不同,我们已经为企业开发人员提供了完整的与数据库相结合的示例(ASP.NET,JSP,PHP)。开发人员能够非常容易的在自已的系统中实现断点续传功能。 产品特点如下: 1. 为TB级文件提供...

    ASP.NET基础控件-教程

    内容:  Asp.net页面内传参数... Asp.net中My97DatePicker4.2日期的使用  Asp.net中DataList控件添加删除  Asp.net获取请求的用户信息IP地址  获取世界IP地址库显所在城市信息  MySQL事务处理  SQL内部常用函数

    Asp.Net使用HttpWebRequest跨域上传

    Asp.Net使用HttpWebRequest跨域上传,可以实现asp.net跨域文件上传或者大数传输

    文件传输程序C#ASP.NET

    一个文件传输程序C#ASP.NETC#ASP.NETC#ASP.NET

    ASP.NET和AJAX简洁教程

    介绍 尽管AJAX是种客户端技术,但实际上的开发...作为开始,使用Visual Studio 2005创建一个新的Web站点,注意把ASP.NET AJAX项目模板添加到新站点对话框,这个对话框包括一个"ASP.NET AJAX Enabled Web Site" 模板。

    ASP.NET Core Kestrel 中使用 HTTPS (SSL)

    在ASP.NET Core中,如果在Kestrel中想使用HTTPS对站点进行加密传输,可以按照如下方式  申请证书  这一步就不详细说了,有免费的和收费的,申请完成之后会给你一个*.pfx结尾的文件。  添加NuGet包  nuget中...

    asp.net web HTTP压缩组件 v2.0

    HTTP Compression Module是一个ASP.NET页面和资源压缩模块,ASP.NET的VIEWSTAT虽然好用但是会使输出的HTML代码臃肿不堪,在带宽资源极为有限的国内表现的尤其明显,但凡ASP.NET的网站打开速度明显缓慢,造成了ASP...

    asp.net知识库

    在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...

    ASP.NET Core单文件和多文件上传并保存到服务端的方法

    主要介绍了ASP.NET Core单文件和多文件上传并保存到服务端的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    ASP.NET的网页代码模型及生命周期

    在ASP.NET中,可以创建ASP.NET网站和ASP.NET应用程序,ASP.NET网站的网页元素包含可视元素和页面逻辑元素,并不包含designer.cs文件。而ASP.NET应用程序包含designer.cs文件。创建ASP.NET网站,首先需要创建网站,...

    asp.net技术内幕(1)

    4.3.3 使用HTMLInputFile控件接受文件上传 4.4 小结 <br>第二部分 高级ASP.NET页面开发 <br>第5章 用用户控件创建自定义控件 <br>5.1 用用户控件包含标准内容 5.2 显露用户控件中的属性和...

    ASP.NET视频点播系统的设计与实现(源代码+毕设).zip

    本视频点播系统根据流媒体传输原理,在校园局域网的基础上模拟基于Web的视频点播系统,实现用户信息管理、视频文件的添加、删除、修改及在线播放和搜索功能。本系统是一个小型系统,我们采用基本的SQL Server数据库...

Global site tag (gtag.js) - Google Analytics