菠菜我最近在搞 Ext 開發的郵件系統, 其中就有用到如何上傳文件這個大眾化的問題,經過我一上午的研究和查資料終於搞定,現在決定把代碼共享出來,方便大家,呵呵.
純屬個人原創,所以轉貼請注明出處:
http://blog.csdn.Net/zhangyunbo1116
當然,我使用的是 ExtJS論壇中的一個組件, 非常感歎作者的牛比哄哄. 作者的大名叫: MaximGB .. 呵呵,現在我就為你到來如何開發這樣的上傳文件. 基本結構是:
Ext 前台實現界面,後台采用 ASP.Net 開發. JSP 我會,但就是 php 偶不會,可是在老外的論壇,PHP可是王者哦,呵呵!
需要下載的 Ext 上傳文件的組件擴展:
http://max-bazhenov.com/dev/upload-dialog-2.0/index.PHP
進入開發作者的頁面,下載最新的上傳組件包, 如果不是最新的擴展包,有可能作者改過的bug你沒有修正,這樣,豈不是很慘哦!
現在進入正題,我在這裡只提供一個最最基本的 demo 程序, 當然需要你知道的前提知識是,如何使用 Ext, 如何在自己的頁面中加入 JS 文件,如果這個你都不會,我真的是很無語,你還是先開看 Ext 的基本教程吧,然後再看我這篇文章.
下載後的壓縮包解壓,你就會發現文件不是很多,我只提兩個關鍵的文件:
Ext.ux.UploadDialog.js 這個就是實現功能的 js文件,但是是格式化的,方便感興趣的人自己閱讀的 JS 代碼文件,當你發布應用的時候,建議不要引入該文件,而是引入下面一個文件.
Ext.ux.UploadDialog.packed.JS 是壓縮好的,引入這個文件,可以提高用戶的訪問速度.
Ext.ux.UploadDialog.CSS 這是樣式文件,應該導入.
如果你嫌麻煩,想直接看真實的東東,那就到這裡下載,裡面還有我漢化的一個小小的js,文件,只要覆蓋: Ext.ux.UploadDialog.packed.JS 就 可以了.
http://download.csdn.Net/user/zhangyunbo1116/
http://download.csdn.Net/source/345961
先來 Ext 寫的界面 和對應的JS 代碼, 該導入的你自己倒哦
<html XMLns="http://www.w3.org/1999/xHtml" >
<head>
<title>測試如何使用Ext 2.0</title>
<meta http-equiv="Content-Type" content="text/Html; charset=gb2312">
<!-- 包含Ext2.0 CSS 文件-->
<link rel="stylesheet" href="../Ext-2.0/resources/css/ext-all.CSS" />
<!-- 包含Ext2.0 腳本文件-->
<script type="text/Javascript" src="../Ext-2.0/adapter/ext/ext-base.JS"></script>
<script type="text/Javascript" src="../Ext-2.0/ext-all.JS"></script>
<script type="text/Javascript" src="js/TestFormUpload.JS"></script>
<!-- 上傳組件使用的鏈接-->
<link rel="stylesheet" href="Ext.ux.UploadDialog/UploadDialog/css/Ext.ux.UploadDialog.CSS" />
<script type="text/Javascript" src="Ext.ux.UploadDialog/UploadDialog/Ext.ux.UploadDialog.packed.JS"></script>
</head>
<body>
<div id=''demo-panel''>
<h3>Demo panel</h3>
<div id=''file-list''></div>
<div id=''show-dialog-btn''></div>
</div>
</body>
</Html>
關於漢化問題,開發的作者說的很詳細, 我就很簡單, 直接編輯了Ext.ux.UploadDialog.packed.JS . 在這個頁面的最後由一個對象Ext.ux.UploadDialog.Dialog.prototype. i18n .. 直接把裡面的英文改成中文就可以,如果各位還信得過偶的英文水平,可以拷貝偶的翻譯的東東,下載覆蓋.
可以到這裡下載:
var p=Ext.ux.UploadDialog.Dialog.prototype;p.i18n={title:"上傳文件",state_col_title:"狀態",state_col_width:70,filename_col_title:"文件名",filename_col_width:230,note_col_title:"備注",note_col_width:150,add_btn_text:"添加",add_btn_tip:"添加文件到上傳隊列。",remove_btn_text:"刪除",remove_btn_tip:"從上傳隊列刪除文件。",reset_btn_text:"重置",reset_btn_tip:"重置隊列。",upload_btn_start_text:"開始上傳",upload_btn_stop_text:"中斷上傳",upload_btn_start_tip:"上傳文件對列。",upload_btn_stop_tip:"停止上傳。",close_btn_text:"關閉",close_btn_tip:"關閉上傳對話框。",progress_waiting_text:"等待...",progress_uploading_text:"上傳中: {0} 的 {1} 文件集合成功。",error_msgbox_title:"錯誤",permitted_extensions_join_str:",",err_file_type_not_permitted:"不支持上傳該類型文件.<br/>請選擇下列類型的文件集合 {1}",note_queued_to_upload:"上傳的隊列。",note_processing:"上傳中...",note_upload_failed:"當前請求過多,服務器正忙,不能及時響應或者因特網服務器發生錯誤。",note_upload_success:"成功。",note_upload_error:"上傳文件出錯。",note_aborted:"已經被用戶中斷"}
到現在,就完了,祝各位新年快樂,萬事大吉,鼠年發財…..