一般10M以下的文件上傳通過設置Web.Config,再用VS自帶的FileUpload控件就可以了,但是如果要上傳100M甚至1G的文件就不能這樣上傳了。NeatUpload是一款為數不多的開源、免費的文件上傳控件,不僅支持大文件上傳,而且還顯示上傳進度。下面我們來介紹一下NeatUpload控件的使用方法。
一、下載NeatUpload並解壓在任意位置
http://neatupload.codeplex.com/releases/view/59339,可以下載到最新的NeatUpload,目前最新版本應該是NeatUploadBinaries-1-3-26,解壓后可以得到如下文件:

二、安裝配置NeatUpload控件(.Net Framework2.0環境)
1. 將上述bin/中Brettle.Web.NeatUpload.dll添加到%windir%\assembly中:

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個工具:

我們主要使用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. 前台代碼
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>
2. 后台代碼:
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 }
3. 最終效果:

四、實例使用環境
1. 使用環境VS2012+.Net Framework2.0,如果是在.Net Framework 3.5及其以上版本使用安裝和配置會更簡單。
五、 常見問題
1.

解決方法是在system.webServer節中加入以下內容,讓服務器允許的最大請求量增加,如下設置的是1G:
1 <security> 2 <requestFiltering> 3 <requestLimits maxAllowedContentLength="1073741824"/> 4 </requestFiltering> 5 </security>
2.

解決方法是將system.web節的“UploadHttpModules"配置調整到system.webServer節中,以適應在托管管道模式下運行應用程序:
1 <modules> 2 <add name="UploadHttpModule" type="Brettle.Web.NeatUpload.UploadHttpModule, Brettle.Web.NeatUpload" /> 3 </modules>
