使用NeatUpload控件实现ASP.NET大文件上传

时间:2023-03-08 20:21:51

使用NeatUpload控件实现ASP.NET大文件上传

一般10M以下的文件上传通过设置Web.Config,再用VS自带的FileUpload控件就可以了,但是如果要上传100M甚至1G的文件就不能这样上传了。NeatUpload是一款为数不多的开源、免费的文件上传控件,不仅支持大文件上传,而且还显示上传进度。下面我们来介绍一下NeatUpload控件的使用方法。

一、下载NeatUpload并解压在任意位置

http://neatupload.codeplex.com/releases/view/59339,可以下载到最新的NeatUpload,目前最新版本应该是NeatUploadBinaries-1-3-26,解压后可以得到如下文件:

使用NeatUpload控件实现ASP.NET大文件上传

二、安装配置NeatUpload控件(.Net Framework2.0环境)

1. 将上述bin/中Brettle.Web.NeatUpload.dll添加到%windir%\assembly中:

使用NeatUpload控件实现ASP.NET大文件上传

2. 将上述bin/中Brettle.Web.NeatUpload.dll添加到项目或网站的引用中,观察Web.config文件会发现自动增加了如下配置:

1 <compilation debug="false">
2 <assemblies>
3 <add assembly="Brettle.Web.NeatUpload, Version=1.3.4034.20191, Culture=neutral, PublicKeyToken=DD134EA1C3727369"/>
4 </assemblies>
5 </compilation>

3. 在工具箱上添加项,可以得到7个工具:

使用NeatUpload控件实现ASP.NET大文件上传

我们主要使用InputFile和ProgressBar这两个控件。

4. 在Web.config的system.web节加入如下配置,

1 <httpModules>
2 <add name="UploadHttpModule" type="Brettle.Web.NeatUpload.UploadHttpModule, Brettle.Web.NeatUpload" />
3 </httpModules>

至此,NeatUpload的安装和配置工作完成。

三、使用NeatUpload控件

1. 前台代码

使用NeatUpload控件实现ASP.NET大文件上传
 1 <body>
2 <form id="form1" runat="server">
3 <div>
4 <Upload:InputFile ID="AttachFile" runat="server"/>
5 <Upload:ProgressBar ID="ProgressBar1" runat='server'>
6 </Upload:ProgressBar>
7 </div>
8 <div>
9 <asp:Button ID="btnSave" runat="server" Text="保存" OnClick="btnSave_Click" />
10 </div>
11 </form>
12 </body>
使用NeatUpload控件实现ASP.NET大文件上传

2. 后台代码:

使用NeatUpload控件实现ASP.NET大文件上传
 1 protected void btnSave_Click(object sender, EventArgs e)
2 {
3 if (AttachFile.HasFile)
4 {
5 string FileName = this.AttachFile.FileName;//获取上传文件的文件名,包括后缀
6 string ExtenName = System.IO.Path.GetExtension(FileName);//获取扩展名
7 string SaveFileName = System.IO.Path.Combine(
8 System.Web.HttpContext.Current.Request.MapPath("UpLoads/"),
9 DateTime.Now.ToString("yyyyMMddhhmm") + ExtenName);//合并两个路径为上传到服务器上的全路径
10 AttachFile.MoveTo(SaveFileName, Brettle.Web.NeatUpload.MoveToOptions.Overwrite);
11 string url = "UpLoads/" + DateTime.Now.ToString("yyyyMMddhhmmss") + ExtenName; //文件保存的路径
12 float FileSize = (float)System.Math.Round((float)AttachFile.ContentLength / 1024000, 1); //获取文件大小并保留小数点后一位,单位是M
13 }
14 }
使用NeatUpload控件实现ASP.NET大文件上传

3. 最终效果:

使用NeatUpload控件实现ASP.NET大文件上传

四、实例使用环境

1. 使用环境VS2012+.Net Framework2.0,如果是在.Net Framework 3.5及其以上版本使用安装和配置会更简单。

五、 常见问题

1.

使用NeatUpload控件实现ASP.NET大文件上传

解决方法是在system.webServer节中加入以下内容,让服务器允许的最大请求量增加,如下设置的是1G:

1 <security>
2 <requestFiltering>
3 <requestLimits maxAllowedContentLength="1073741824"/>
4 </requestFiltering>
5 </security>

2.

使用NeatUpload控件实现ASP.NET大文件上传

解决方法是在system.webServer节中加入以下内容,以适应在托管管道模式下运行应用程序:

1 <modules>
2 <add name="UploadHttpModule" type="Brettle.Web.NeatUpload.UploadHttpModule, Brettle.Web.NeatUpload" />
3 </modules>
分类: ASP.NET相关