看到一篇关于上传文章,先抄过来,慢慢学习
2005-04-30 21:11
495 查看
原贴在这里:http://blog.joycode.com/saucer/archive/2004/03/16/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
;
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)
这里有开源的代码,大家可以学些一下。
http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=fe16801f-2d2c-49fd-be31-d28135365379
我们在上传大文件时都遇到过这样或那样的问题。设置很大的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
;
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)
这里有开源的代码,大家可以学些一下。
http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=fe16801f-2d2c-49fd-be31-d28135365379
相关文章推荐
- 最近在学习串口编程,需要在Thread之间进行消息交换。遇到一篇关于PostThreadMessage的好文章,抄过来了
- 今天看到的关于深度学习的一篇文章,可以好好学习下
- 【Android】数据存储数据库SQLite(之前有看到的一篇关于SQLite文章,简单明了、覆盖较全面适合学习)
- 很好的一篇关于xcode的学习文章
- 关于图像快速缩放算法,目前看到的最好的最清晰的一篇文章
- 刚在一个论坛看到一篇文章,说的似乎很是高深,我也不太懂,于是转载了过来,大家一起看看
- JVM学习04_java中的堆、栈和常量池[看到一篇好文章,加自己想法]
- 看到一篇文章讲ios的动画, 比较齐全,转过来, UIViewAnimation动画与CATransition类动画
- 一篇关于struts2文件上传的好文章
- 看到一篇好文章,特意转过来:嵌入式软件测试的十大秘诀
- 学习Exadata时看到的一篇不错的文章,转一下,自己也备忘
- 关于2017年前端学习最客观的一篇文章
- Makefile详解--学习linux下Gtk开发看到的一篇详细的讲解Makefile的文章,转来分享
- 看到一篇好的文章计算机专业的学习心得
- 从别人那里看到的一篇关于select模型开发的文章,不一定好用,但先留下。
- 学校BBS上看到一篇关于追女孩子的文章,相信谁看了都会有种恍然大悟的感觉。
- 今天看到一篇很精典的关于Makefile的文章
- 至今看到过的最高水平,最详细内容,最具含金量的一篇关于安全与加密方面的技术文章
- 关于一片如何学习好linux的文章,感觉不错就给转过来了。
- 一篇关于正则表达式的学习文章。