用ASP.NET上传大文件
作者:思归 微软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 上传大文件控件.经过测试,在ie中可显示进度条.特此共享,望广大网友多提意见. 大文件上传控件(包含进度条) 使用说明如下: <summary> 上 ...
- Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度
====================================================== 注:本文源代码点此下载 ================================= ...
- asp.net 上传大文件解决方案(转)
这次在项目中,用到了大文件上传,要上传的文件有100多m,于是研究现在国内使用的大文件上传的 组件发现用的比较多的有两个控件AspnetUpload 2.0和Lion.Web.UpLoadModule ...
- Asp.Net 上传大文件
HttpModule.cs 代码 namespace WebUploadFile { public class HttpUploadModule : IHttpModule { ...
- [转]Asp.Net 上传大文件专题(3)--从请求流中获取数据并保存为文件[下]
转自:http://www.cnblogs.com/stg609/archive/2008/08/03/1259206.html 接着上一篇讲 3.4 读取剩余的请求 前面我们已经提到过R ...
- Asp.Net 上传大文件专题(3)--从请求流中获取数据并保存为文件[下]
接着上一篇讲 3.4 读取剩余的请求 前面我们已经提到过ReadEntityBody (Byte[] buffer, Int32 size)方法,该方法可以用来读取客户端的请求数据 ...
- ASP无法上传大文件的解决方法
一.错误提示--ASP 0104 : 80004005 (1)ASP 0104 : 80004005 问题:WIN2003无法上传较大的文件"Request 对象 错误 \'ASP 0104 ...
- asp.net core mvc上传大文件解决方案
asp.net core mvc上传大文件解决方案 参考文章: (1)asp.net core mvc上传大文件解决方案 (2)https://www.cnblogs.com/eggtwo/p/988 ...
- [Asp.net]Uploadify上传大文件,Http error 500 解决方案
[Asp.net]Uploadify上传大文件,Http error 500 解决方案 参考文章: (1)[Asp.net]Uploadify上传大文件,Http error 500 解决方案 (2) ...
最新文章
- 自学篇之--js 提取复选框和单选框的值 和纯css的3D按钮
- proc除了能用于oracle开发_能不能用于mysql开发_Oracle数据库开发(二).Linux下配置使用ProC...
- 【机器学习入门到精通系列】多变量线性回归(附详细代码)
- 【BZOJ-3262】陌上花开 CDQ分治(3维偏序)
- Bootstrap系列 -- 37. 基础导航样式
- java线程本地存储_[并发并行]_[C/C++]_[使用线程本地存储Thread Local Storage(TLS)-win32和pthread比较]...
- 公司有内部推荐的名额
- 系统学习深度学习(二十三)--SqueezeNet
- 腾讯正式开源高性能Hybrid框架VasSonic!
- Jquery 数组操作(转)
- visio画图复制粘贴到word_怎么将visio绘图导入Word(visio绘图插入word后如何调整大小)...
- 内网穿透,将内网地址映射为外网地址
- 【渝粤题库】陕西师范大学200931小学语文教学论 作业(高起专)
- Codeforces 633C Spy Syndrome 2(Trie+暴力)
- win7系统ie被篡改怎么解决
- 手把手教你搭建SpringCloud项目(二)生产者与消费者
- flea-jersey使用之Flea RESTful接口服务端接入
- 前端学习------眼球跟踪效果
- paddlepaddle CPU模型部署加速包 MKL-DNN
- 外卖系统外卖O2O系统开发功能与开发难点介绍
热门文章
- eas账号是什么意思_刚开始做抖音带货和好物推荐,如何布局抖音种草账号矩阵?...
- C mysql添加_MYSQL将表 B C 插入表A方法
- Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)
- Python自动生成企业合同
- 在Python上使用OpenCV检测和跟踪行人
- C语言中的struct结构体对齐问题
- 一台服务器两个mysql_在一台服务器上安装两个或多个mysql的实现步骤_MySQL
- ROS与PCL中点云数据之间的转换
- 《DDIA》读书笔记
- L1-044 稳赢 (暴力法)