在B/S項目中“文件上傳”是一個比較常用的功能,也有很多實現(xiàn)的方式,個人比較喜歡用第三方的上傳組件uploadify,因為它功能比較強大,配置也比較靈活(多文件、上傳進度顯示、文件類型、文件大小、文件數(shù)量、選擇按鈕樣式設(shè)置、上傳過程的種種控制、各種事件響應(yīng)等)。
以前的使用方式:
1、注冊需要的javascript、CSS
2、用javascript進行配置
3、后臺處理程序進行上傳處理
我是個懶人,覺得這樣太麻煩,就將它進行了asp.net服務(wù)器控件的封裝。
現(xiàn)在的使用方式:
不再需要在項目中添加JS、CSS、圖片、flash等文件,也不用進行javascript配置,也不用寫后臺處理程序,只需要直接使用控件即可。
1、引入Uploadify_Simple_ASPNET.dll
2、在頁面中注冊并使用
1 <%@ Register Assembly="Uploadify_Simple_ASPNET" Namespace="Uploadify_Simple_ASPNET" 2 TagPrefix="cc1" %> 3 4 <cc1:UploadifyControl ID="UploadifyControl1" runat="server" Auto="false" ButtonImage="image.png" ButtonText="瀏覽" Height="30" Width="80" 5 FileSizeLimit=0 FileTypeExts="*.gif; *.jpg; *.png; *.bmp" FileTypeDesc="圖片"> 6 </cc1:UploadifyControl>
3、在web.config配置httpHandlers
<!--必須增加下面的httpHandler--> <httpHandlers> <add verb="POST,GET" path="Uploadify_Simple_ASPNET/*.ashx" type="Uploadify_Simple_ASPNET.uploadHandler"/> </httpHandlers>
控件屬性:
SWF:SWF核心文件路徑(一般不需要設(shè)置)
ButtonText:瀏覽按鈕上顯示的文字
ButtonImage:瀏覽按鈕圖片路徑
Width:瀏覽按鈕寬度(單位為像素)
Height:瀏覽按鈕高度(單位為像素)
FormData:表單數(shù)據(jù)
QueueSizeLimit:隊列最多可上傳文件數(shù)量
UploadLimit:一次上傳文件的數(shù)量
Auto:選擇文件后是否自動上傳
Multi:是否為多選
RemoveCompleted:是否完成后移除序列
FileSizeLimit:單個文件大小最大值,0為無限制(單位為MB)
FileTypeDesc:文件描述
FileTypeExts:上傳的文件后綴過濾器(例:*.gif; *.jpg; *.png; *.bmp)
控件方法:
使用方式:給需要使用該方法的按鈕添加onclick屬性,屬性值為“控件.方法名()”
1 <input type="button" class="shortbutton" id="btnUpload" value="上傳" runat="server" /> 2 3 <input type="button" class="shortbutton" id="btnCancelUpload" value="取消" runat="server" /> 4 5 <input type="button" class="shortbutton" id="btnCancelFirst" value="取消第一個" runat="server" /> 6 7 <input type="button" class="shortbutton" id="btnStop" value="停止上傳" runat="server" /> 8 9 10 11 //上傳全部 12 btnUpload.Attributes.Add("onclick", UploadifyControl1.Upload()); 13 //取消全部 14 btnCancelUpload.Attributes.Add("onclick", UploadifyControl1.Cancel()); 15 //取消第一個 16 btnCancelFirst.Attributes.Add("onclick", UploadifyControl1.CancelFirst()); 17 //停止上傳 18 btnStop.Attributes.Add("onclick", UploadifyControl1.Stop());
Upload():上傳全部
Cancel():取消全部
CancelFirst():取消第一個
Stop():停止上傳
控件事件:
使用方式:訂閱控件的上傳事件(目前上傳事件是靜態(tài)的)
1 //訂閱文件上傳事件(目前UploadEvent事件是靜態(tài)的) 2 UploadifyControl.UploadEvent += (HttpPostedFile file) => 3 { 4 //上傳操作業(yè)務(wù)處理 開始 5 string uploadPath = HttpContext.Current.Server.MapPath("~\\uploadFiles\\"); 6 if (!Directory.Exists(uploadPath)) 7 { 8 Directory.CreateDirectory(uploadPath); 9 } 10 file.SaveAs(uploadPath + file.FileName); 11 //上傳操作業(yè)務(wù)處理 結(jié)束 12 };
UploadEvent:文件上傳事件
下面是控件的源碼以及示例程序(小弟菜鳥一枚,如有不妥之處,還望各位大牛、大神指教,我會盡力完善)
這個控件只是對uploadify常用功能的封裝,有些屬性方法并沒有封裝在內(nèi)。如果你覺得你需要使用uploadify的某些屬性或方法,但控件中沒有,你可以:
1、 留言給我或給我發(fā)郵件(qinjiadong369@163.com),我會盡力完善
2、 直接使用uploadify
3、 下載我的控件源碼,自己進行完善。
當(dāng)然我更希望你告訴我你的需求,這樣能讓這個控件更好一些,讓更多的人方便。