大家都知道VS2008本身提供的控件比較簡單易用,但使用卻受到很多限制,比如說上,上傳時取消操作,多檔案上傳,上傳過程的進度顯示問題,要解決這些問題可以利用第三方插件aspnetupload,本人參考了書和網上文章發現都不完整或出現問題,研究了一下成功.
首先右鍵單擊網站根目錄,在彈出的快捷菜單中,選擇"添加引用"菜單項,彈出"添加引用",切換到"浏覽"找到元件的Dll檔案"Bestcomy.Web.Controls.Upload.dll"(本檔案可到官網www.aspnetupload.net下載下傳,本文後面也提供下載下傳),單擊"确定",回到VS2008工作界面,
Web.config的配置:
在<configSections>下面加入:
<section name="aspnetUploadSettings" type="System.Configuration.NameValueFileSectionHandler,System, Version=2.2.0.60111, Culture=neutral,PublicKeyToken=b77a5c561934e089" />
在</appSections>中加入:
<aspnetUploadSettings>
<!--
Key Name: lisenceKey
Valid Value: Purchased lisence key from the control author.
-->
<add key="lisenceKey" value="ERk5WdTrreEgnx9gAJ07Fz7XJ0cgnaB9o" />
<!--
Key Name: maxRequestLength
Valid Value: KBytes size of maximum upload file length to accept
-->
<add key="maxRequestLength" value="2048000" />
</aspnetUploadSettings>
本人一開始少加這個老上傳不成功,value="2048000"這裡可以自行修改相應的值.
在 <system.web>和 </system.web>之間找到 <httpModules> </httpModules>在這之間加入:
<add name="UploadModule" type="Bestcomy.Web.Controls.Upload.UploadModule,Bestcomy.Web.Controls.Upload"/>
上傳前台代碼:
<div>
<input type="file" name="file1" /><br />//注冊這是html控件,name都是"file1".
<input type="file" name="file1" /><br />
<input type="file" name="file1" /><br />
<asp:Button ID="Button1" runat="server" Text="上傳" οnclick="Button1_Click" />
</div>
背景代碼:
要加入using System.IO; using Bestcomy.Web.Controls.Upload; 這兩命名空間
protected void Page_Load(object sender, EventArgs e)
{
String fpath = Path.Combine(Request.PhysicalApplicationPath, "UploadFiles");
if (!Directory.Exists(fpath))
Directory.CreateDirectory(fpath);
AspnetUpload upldr = new AspnetUpload();
upldr.set_UploadFolder(fpath);
upldr.RegisterModelessProgressBar(this.Button1);//這是注冊Button1的進度條,按<F5>運作後重新整了解決方案會看到一個檔案夾"aspnetUpload_Script"存放名為:ProgressBar.aspx的頁面,打開修改文字為中文.
}
protected void Button1_Click(object sender, EventArgs e)
{
string fpath = Path.Combine(Request.PhysicalApplicationPath, "UploadFiles");
UploadFileCollection files = AspnetUpload.GetUploadFiles("file1");
foreach (UploadFile file in files)
{
//UploadFile file = AspnetUpload.GetUploadFile("file1");
if (file != null)
file.SaveAs(Path.Combine(fpath, Path.GetFileName(file.get_FileName())));
}
}
背景一個是判斷是否奇存在"UploadFiles"檔案夾,如果沒有就建立一個"UploadFiles"檔案夾在根目錄,另一個是按鈕事件,判斷後儲存每個上傳控件的檔案.
這樣就可以實作開始提出那些vs2008本身上傳控件做不到的功能了,如果想同時上傳更多的檔案,隻要多加一些" <input type="file" name="file1" />"就行了.如有問題,請留言交流.
Bestcomy.Web.Controls.Upload.dll下載下傳