在B/S項目中“檔案上傳”是一個比較常用的功能,也有很多實現的方式,個人比較喜歡用第三方的上傳組件uploadify,因為它功能比較強大,配置也比較靈活(多檔案、上傳進度顯示、檔案類型、檔案大小、檔案數量、選擇按鈕樣式設定、上傳過程的種種控制、各種事件響應等)。
以前的使用方式:
1、註冊需要的javascript、CSS
2、用javascript進行配置
3、幕後處理程式進行上傳處理
我是個懶人,覺得這樣太麻煩,就將它進行了asp.net伺服器控制項的封裝。
現在的使用方式:
不再需要在項目中添加JS、CSS、圖片、flash等檔案,也不用進行javascript配置,也不用寫幕後處理程式,只需要直接使用控制項即可。
1、引入Uploadify_Simple_ASPNET.dll
2、在頁面中註冊並使用
View Code
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
View Code
<!--必須增加下面的httpHandler--> <httpHandlers> <add verb="POST,GET" path="Uploadify_Simple_ASPNET/*.ashx" type="Uploadify_Simple_ASPNET.uploadHandler"/> </httpHandlers>
控制項屬性:
SWF:SWF核心檔案路徑(一般不需要設定)
ButtonText:瀏覽按鈕上顯示的文字
ButtonImage:瀏覽按鈕圖片路徑
Width:瀏覽按鈕寬度(單位為像素)
Height:瀏覽按鈕高度(單位為像素)
FormData:表單資料
QueueSizeLimit:隊列最多可上傳檔案數量
UploadLimit:一次上傳檔案的數量
Auto:選擇檔案後是否自動上傳
Multi:是否為多選
RemoveCompleted:是否完成後移除序列
FileSizeLimit:單個檔案大小最大值,0為無限制(單位為MB)
FileTypeDesc:檔案描述
FileTypeExts:上傳的檔案尾碼過濾器(例:*.gif; *.jpg; *.png; *.bmp)
控制項方法:
使用方式:給需要使用該方法的按鈕添加onclick屬性,屬性值為“控制項.方法名()”
View Code
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():停止上傳
控制項事件:
使用方式:訂閱控制項的上傳事件(目前上傳事件是靜態)
View Code
1 //訂閱檔案上傳事件(目前UploadEvent事件是靜態) 2 UploadifyControl.UploadEvent += (HttpPostedFile file) => 3 { 4 //上傳操作業務處理 開始 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 //上傳操作業務處理 結束12 };
UploadEvent:檔案上傳事件
下面是控制項的源碼以及樣本程式(小弟菜鳥一枚,如有不妥之處,還望各位大牛、大神指教,我會儘力完善)
控制項源碼及樣本
這個控制項只是對uploadify常用功能的封裝,有些屬性方法並沒有封裝在內。如果你覺得你需要使用uploadify的某些屬性或方法,但控制項中沒有,你可以:
1、 留言給我或給我發郵件(qinjiadong369@163.com),我會儘力完善
2、 直接使用uploadify
3、 下載我的控制項源碼,自己進行完善。
當然我更希望你告訴我你的需求,這樣能讓這個控制項更好一些,讓更多的人方便。
參考:
http://www.uploadify.com/
http://www.cnblogs.com/wuhuacong/archive/2012/12/01/2797679.html
如果你覺得文章對你有協助,可以點擊旁邊的“推薦”按鈕,這樣會讓更多需要的人有機會看到