作者:思归 微软MVP http://blog.joycode.com/saucer/
我们在上传大文件时都遇到过这样或那样的问题。设置很大的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上传大文件,和基于大文件上传一下常用的控件。
在ASP.NET中,上传大文件并显示进度条是一项常见的需求,尤其在用户可能需要等待较长时间的情况下,进度条可以提供良好的用户体验。以下是对这个主题的详细讲解。 首先,ASP.NET默认上传文件大小有限制,通常为4MB...
在这个场景下,我们可以使用jQuery库中的`jquery.form`插件来增强页面的交互性,并结合ASP.NET后端技术,实现异步、无刷新的批量文件上传功能。下面我们将详细探讨这个过程中的关键知识点。 首先,`jQuery.form`...
标题“asp.net上传大文件”表明我们将讨论如何在ASP.NET框架下处理大容量的文件上传。描述提到,不仅可以上传无限大小的文件,还能实现多文件选择,并且可以设定上传文件的大小限制,这涉及到了文件上传的性能优化和...
在ASP.NET环境中,上传大文件是一项常见的需求,特别是在处理用户提交的多媒体内容或者大量数据时。本示例主要探讨如何在ASP.NET应用中实现大文件的上传,涉及到的关键技术包括C#编程语言、多部分表单数据处理以及流...
在处理大文件上传时,ASP.NET需要特别的处理,因为默认情况下,它对上传文件的大小有限制,通常为4MB左右。针对超大文件上传的需求,开发者通常需要采取一些策略来优化和扩展这一功能,同时加入进度条显示可以提升...
本文主要讲述了ASP.NET单文件带进度条上传的解决方案,通过使用jquery框架和ASP.NET缓存机制,实现了文件上传和进度条显示的功能。 知识点1:使用jquery框架实现文件上传 在本文中,我们使用jquery框架来实现文件...
ASP.NET大文件上传是Web开发中的一个重要话题,尤其是在处理用户可能需要上传大量数据或大型多媒体文件的场景。本文将深入探讨ASP.NET实现大文件上传的原理、相关技术以及提供的源码解析。 首先,ASP.NET是一种微软...
当我们面临大文件上传的需求时,ASP.NET提供了一些策略和技巧来优化这一过程。 首先,了解ASP.NET MVC中的文件上传机制。默认情况下,ASP.NET MVC使用`HttpPostedFileBase`类来处理文件上传。用户通过表单提交文件...
总结来说,这个案例展示了如何在ASP.NET中使用Telerik控件实现大文件上传,涉及了UI设计、服务器端处理、配置管理、文件存储以及可能的数据库操作。通过深入研究这些文件和目录,开发者可以学习到如何构建一个稳定、...
ASP.NET AJAX 多文件上传是一种在Web应用中实现高效、用户友好的文件上传方式,它结合了ASP.NET技术和AJAX(Asynchronous JavaScript and XML)的优势,提供了异步上传功能,使得用户无需等待整个页面刷新就能完成...
9. **异步处理**:对于大文件操作,可能使用ASP.NET的异步处理,以避免阻塞线程,提高系统性能。 10. **错误处理与日志记录**:为了调试和维护,系统应具备完善的异常处理和日志记录机制。 11. **安全性**:考虑到...
在ASP.NET中,文件操作是常见的任务,包括文件的上传、读取和删除。这些功能在网站应用中尤其重要,例如用户需要上传个人照片、下载文档或者清除不再需要的文件。接下来,我们将深入探讨如何在ASP.NET环境中实现这些...
在ASP.NET中处理文件上传是常见的需求,尤其是在用户需要提交图片、文档或其他数据文件时。这篇博客文章“ASP.NET通过HTML的上传文件标签来上传文件”将引导我们了解如何在ASP.NET环境中实现文件上传功能。 首先,...
asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件...
在ASP.NET中实现大文件上传并显示进度条是一项常见的需求,尤其在处理用户可能上传的大量数据时。本文将深入探讨如何在ASP.NET环境中利用C#语言开发一个具有上传进度条功能的大文件上传系统。 首先,我们需要理解...
在ASP.NET Web API中处理文件上传是常见的需求,特别是当你需要允许用户通过Web界面提交文件时。本文将深入探讨如何在ASP.NET Web API中实现文件上传功能,并涉及MIME多部分类型。 首先,让我们了解MIME...
在本场景中,我们讨论的是如何使用ASP.NET实现文件上传功能。以下将详细阐述这一过程,以及涉及到的关键知识点。 首先,我们需要一个HTML表单让用户选择要上传的文件。在`FileUpload.htm`文件中,这可以通过`...