最近涉及到用asp.net做上傳功能的一個問題,因為asp.net有fileupload的上傳控制項,但是這個控制項上傳的檔案大小有限,所以根本滿足不了需求
百度了下,很多人遇到asp.net上傳超大檔案的困惑,偶爾搜尋發現csdn有個哥們提到這個超大檔案如何?,RadUpload.Net2.dll並且提供了這個動態庫進行處理超大檔案的上傳處理過程。於是就下載下來看了看,果然效果不錯,不但支援吵過700M的檔案上傳快速,更重要的是支援多線程的上傳檔案。
查看原始碼發現利用的控制項也是fileupload的控制項,但是處理的程序呼叫的是RadUpload.Net2.dll處理的。
上傳後檔案存放到bin下面的upload檔案夾下面,並且可以對上傳的檔案進行重新命名。
1.建立一個aspx的頁面。
2.建立<asp:FileUpload ID="FileUpload1" runat="server" />。
3.建立<asp:Button ID="Button3" runat="server" Text="上傳" OnClick="Button1_Click" />
4.上傳代碼中調用net2.dll的動態庫處理過程。
5.如果建立多個上傳檔案,可以多寫幾個<asp:FileUpload ID="FileUpload1" runat="server" />。
6.最後單擊上傳按鈕,執行其中處理過程。
具體過程如下
foreach (UploadedFile file in RadUploadContext.Current.UploadedFiles) { string Path = Server.MapPath(@"~/Uploads"); //如果路徑不存在,則建立 if (System.IO.Directory.Exists(Path) == false) { System.IO.Directory.CreateDirectory(Path); } //組合路徑,file.GetName()取得檔案名稱 string oldfilename = file.GetName().ToString(); //如果對上傳後的檔案進行重新命名,根據guid進行命名,則放開下面二行代碼 //string fileType = oldfilename.Substring(oldfilename.LastIndexOf(".")); //string newfilename = Guid.NewGuid().ToString("N") + fileType; //Path = Path + "/" + file.GetName().ToString(); Path = Path + "/" + oldfilename; //儲存 file.SaveAs(Path, true); string newurl = @"~/Uploads/" + oldfilename; }