IHttpModule 分块上传大文件

1.一般的在Asp.net里上传文件都是10m左右,要做到大文件上传,必须要改web.config,不过改了web.config有时候也上传不成功,那是每次上传的文件太大,浏览器在这个过程中会超时,采用分块上传的方法就可以避免这种情况。
2.分块上传就是利用post的方法,把数据分块上传,每块上传的数据量少,不会引起超时的问题。不说了,看代码吧。
Code

3.用法
 (1)修改web.config
  
1 <httpModules>
2         <add name="HttpUploadModule"
3            type="HttpModelApp.HttpUploadModule, HttpModelApp" />
4 
5       </httpModules>
6       <httpRuntime
7         maxRequestLength="2000000"
8         executionTimeout="300"
9     />
  (2)aspx
  
1  <form id="form1" runat="server" encType="multipart/form-data" method="post">
2     <div>
3         <INPUT id="firstFile" type="file" name="firstFile" runat="server"><br />
4         &nbsp;<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传" /><br />
5         <asp:Label ID="Label1" runat="server"></asp:Label></div>
6     </form>
 (3)aspx.cs
 
 1 protected void Button1_Click(object sender, EventArgs e)
 2         {
 3             //要保存的位置
 4             string strDesPath = "D:\\";
 5             string strFileName = this.firstFile.PostedFile.FileName;
 6             strFileName =strDesPath + strFileName.Substring(strFileName.LastIndexOf("\\"));
 7             //
 8             this.firstFile.PostedFile.SaveAs(strFileName);
 9             this.Label1.Text = "文件保存到了:" + strFileName;
10         }
4.大文件上传的限制
  虽然可以上传大文件,但是这个大小也是有限制的,不能超过2G的大小。
有什么问题给我联系吧。
源代码下载:/Files/HeroBeast/HttpModelApp.rar
posted @ 2008-02-28 13:48 HeroBeast 阅读(418) 评论(2)  编辑 收藏 所属分类: 控件开发

  回复  引用  查看    
#1楼 2008-03-18 15:24 | Such Cloud      
终于找到有注释的了 多谢啦
  回复  引用  查看    
#2楼 2008-04-10 18:01 | iWorm      
谢谢你提供了代码.
但是我这边尝试使用的时候, 会发现, 如果上传大文件, GetPreloadedEntityBody返回为null

还有一个问题, 就是如果我发现用户上传的文件容量较大, 想给出个提示, 不知怎么做.

第三个问题, 如果我用Handler代替Module, 如果文件容量较大, 我在程序中用Response.Write("xxxxx")之后, 使用Response.End()

结果IE仍然提示Internet Explorer cannot display the webpage

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
历史上的今天: