- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
随笔- 193? 文章- 2? 评论- 147? IHttpModule 分块上传大文件?IHttpModule 分块上传大文件 来源:/HeroBeast/archive/2008/03/18/1084874.html1.一般的在A里上传文件都是10m左右,要做到大文件上传,必须要改web.config,不过改了web.config有时候也上传不成功,那是每次上传的文件太大,浏览器在这个过程中会超时,采用分块上传的方法就可以避免这种情况。2.分块上传就是利用post的方法,把数据分块上传,每块上传的数据量少,不会引起超时的问题。不说了,看代码吧。using?System;using?System.Data;using?System.Configuration;using?System.Web;using?System.Web.Security;using?System.Web.UI;using?System.Web.UI.HtmlControls;using?System.Web.UI.WebControls;using?System.Web.UI.WebControls.WebParts;using?System.IO;using?System.Reflection;using?System.Threading;using?System.Text;using?System.Globalization;///?summary///?实现IHttpModule接口///?/summarypublic?class?HttpUploadModule?:?IHttpModule{????public?HttpUploadModule()????{????}????public?void?Init(HttpApplication?application)????{????????//订阅事件????????application.BeginRequest?+=?new?EventHandler(this.Application_BeginRequest);????}????public?void?Dispose()????{????}????private?void?Application_BeginRequest(Object?sender,?EventArgs?e)????{????????HttpApplication?app?=?sender?as?HttpApplication;????????HttpWorkerRequest?request?=?GetWorkerRequest(app.Context);????????Encoding?encoding?=?app.Context.Request.ContentEncoding;????????int?bytesRead?=?0;??//?已读数据大小????????int?read;???????????//?当前读取的块的大小????????int?count?=?8192;???//?分块大小????????byte[]?buffer;??????//?保存所有上传的数据????????if?(request?!=?null)????????{????????????//?返回?HTTP?请求正文已被读取的部分。????????????byte[]?tempBuff?=?request.GetPreloadedEntityBody();?//要上传的文件????????????//?如果是附件上传????????????if?(tempBuff?!=?null??IsUploadRequest(app.Request))????//判断是不是附件上传????????????{????????????????//?获取上传大小????????????????//?????????????????long?length?=?long.Parse(request.GetKnownRequestHeader(HttpWorkerRequest.HeaderContentLength));????????????????buffer?=?new?byte[length];????????????????count?=?tempBuff.Length;?//?分块大小????????????????//?将已上传数据复制过去????????????????//????????????????Buffer.BlockCopy(tempBuff,??//源数据????????????????????0,??????????????????????//从开始读???????????
文档评论(0)