网站上传方法汇总,制作好网页后,如何把网页上传到申请的空间呢?为初学者做一个汇总。 三、ASP.NET上传文件遇到的问题 我们在用ASP.NET上传大文件时都遇到过这样或那样的问题。设置很大的maxRequestLength值并不能完全解决问题,因为ASP.NET会block直到把整个文件载入内存后,再加以处理。实际上,如果文件很大的话,我们经常会见到Internet Explorer显示 "The page cannot be displayed - Cannot find server or DNS Error",好像是怎么也catch不了这个错误。为什么?因为这是个client side错误,server side端的Application_Error是处理不到的。 四、ASP.NET大文件上传解决方案 解决的方法是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法从IIS为ASP.NET建立的pipe里分块读取数据。Chris Hynes为我们提供了这样的一个方案(用HttpModule),该方案除了允许你上传大文件外,还能实时显示上传进度。 Lion.Web.UpLoadModule和AspnetUpload 两个.NET组件都是利用的这个方案。 方案原理:
利用HttpHandler实现了类似于ISAPI Extention的功能,处理请求(Request)的信息和发送响应(Response)。 方案要点: 1. httpHandler or HttpModule a.在asp.net进程处理request请求之前截获request对象 b.分块读取和写入数据 c.实时跟踪上传进度更新meta信息 2. 利用隐含的HttpWorkerRequest用它的GetPreloadedEntityBody 和 ReadEntityBody方法处理文件流 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) {
..... } } 3. 自定义Multipart MIME 解析器。 自动截获MIME分割符。 将文件分块写如临时文件。 实时更新Appliaction 状态(ReceivingData, Error, Complete) 。
(出处:清风网络学院 )
复制本页网址和标题,发送给你QQ/Msn的好友一起分享
上一篇:Photoshop轻松简单绘制超绚徽标
下一篇:下载:微软Vista系统还原光盘