使用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控件(.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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM