《ext實戰》節選:檔案上傳
**:ext沒提供上傳元件?很多人都會有這疑問。
其實ext.form.textfield就是ext的上傳元件的,只要將其配置引數inputtype設定為「file」就行了。上傳檔案除了檔案輸入框,還有乙個重要的設定,就是需要將form的enctype屬性設定為「multipart/form-data」。這個也很簡單,在定義formpanel的時候加入basicform的配置引數fileupload,並設定為true就行了。
在ext中使用標準上傳方式最大的缺點就是檔案輸入框的寬度很難控制,與介面不是太協調,而且在不同瀏覽器中的顯示是不同的。在ext官方論壇中有很多替代辦法,筆者比較喜歡的是swfupload。
swfupload使用flash作為上傳元件,檔案選擇可以設定為單選,也可以設定多選,而且可以控制選擇檔案的型別。執行檔案選擇不依賴於標準檔案輸入框,可以使用按鈕、鏈結等多種方式執行,從而可以根據需要設定介面。swfupload的提交不依賴form,其模式類似於ajax提交,可以很容易的實現對上傳的控制和顯示上傳進度。
swfupload的官方位址是:
。在swfupload中有兩個主要物件:file和stats。
file物件主要是儲存檔案的一些基本資訊,其結構如下:
stats物件主要提供上傳佇列中的資訊,其結構如下:
表1列出了swfupload的主要配置引數。
表1 swfupload的主要配置引數 引數
型別 描述
upload_url
字串檔案上傳位址
flash_url
字串swfupload使用的flash檔案的絕對位址或相對位址
file_size_limit
字串限制上傳檔案的大小
格式為:值+單位
允許的單位有b、kb、mb和gb。如果不設定單位,則預設單位為kb
如果設定為0則無限制
file_upload_limit
數字允許上傳的檔案數量,該值表示的是在上傳頁面沒有被銷毀前允許上傳的檔案數量。預設值為0,表示沒有限制
file_queue_limit 數字
在一次上傳過程中允許上傳的檔案數量,預設值為0,表示無限制
file_types
字串限制上傳檔案的型別。使用分號分隔各型別
例如:「*.jpg;*.gif」表示只允許上傳擴充套件名為jpg和gif的檔案
file_post_name
字串伺服器端接收檔案的變數名,本屬性只在flash 9版本有效
requeue_on_error
布林值設定為true則當檔案上傳錯誤時重新返回佇列等待上傳,設定為false則不再上傳
post_params 物件
json格式的與檔案一起上傳的引數,flash 8版本不支援
file_types_description
字串在檔案選擇對話方塊顯示的文字描述
flash_color
顏色值設定包含flash的html標籤的背景顏色,預設值是「#ffffff」
debug
布林值設定為true則顯示除錯
file_queued_handler 函式
當選擇檔案對話方塊關閉時執行該函式,函式會傳入乙個file物件
upload_start_handler 函式
檔案開始上傳時執行該函式,函式會傳入乙個file物件
upload_progress_handler 函式
通過該函式顯示上傳進度,函式傳入乙個file物件與檔案已上傳的位元組數
upload_success_handler 函式
單個檔案上傳成功時執行該函式,函式傳入乙個file物件與伺服器端返回的資訊
upload_error_handler 函式
單個檔案上傳失敗或中斷時執行該函式,函式傳入乙個file物件、錯誤**與錯誤資訊
file_queue_error_handler 函式
檔案未能加入佇列時執行該函式,函式傳入乙個file物件、錯誤**與錯誤資訊
表2列出了swfupload的主要方法。
表2swfupload的主要方法 方法
描述selectfile
功能:開啟選擇檔案對話方塊,但允許選擇乙個檔案
語法:selectfile()
引數: 無
返回值:無
例子:swfu.selectfile()
selectfiles
功能:開啟選擇檔案對話方塊,允許選擇多個檔案
語法:selectfiles()
引數: 無
返回值:無
例子:swfu.selectfiles()
startupload
功能:開始上傳檔案
語法:startupload ([file_id])
引數:file_id:可選值,要上傳的檔案編號,如果不設定則上傳佇列裡的第乙個檔案
返回值:無
例子:swfu.startupload ()
cancelupload
功能:取消上傳某個檔案
語法:cancelupload ([file_id])
引數:file_id:可選值,要取消上傳的檔案編號,如果不設定則上傳佇列裡的第乙個檔案取消上傳
返回值:無
例子:swfu.cancelupload ()
stopupload
功能:中止上傳
語法:stopupload ()
引數: 無
返回值:無
例子:swfu.stopupload ()
getstats
功能:返回當前上傳狀態
語法:getstats ()
引數: 無
返回值:stats物件
例子:vat stats=swfu.getstats ()
setpostparams
功能:設定提交的附加引數
語法:setpostparams(param_object)
引數:param_object:乙個json物件
返回值:無
例子:swfu. setpostparams()
該例子附加了兩個提交引數,乙個為id,值為1,乙個為title,值為標題
要使用swfupload,需要在頁面載入swfupload.js檔案並設定好引數,尤其要注意flash檔案的路徑。具體使用方法請看下面例子:
執行操作:
var swfu;
ext.onready(function(),
file_types_description:'',
flash_color : "#ffffff",
file_queued_handler : function(file)else
}, upload_start_handler:function(file),
upload_progress_handler:function(file,bytesloaded),
upload_success_handler:function(file, server_data)else
}else
}, upload_error_handler:function(file,error_code,message){
ext.msg.alert('
《Ext詳解與實踐》節選 檔案上傳
ext沒提供上傳元件?很多人都會有這疑問。其實ext.form.textfield就是ext的上傳元件的,只要將其配置引數inputtype設定為 file 就行了。上傳檔案除了檔案輸入框,還有乙個重要的設定,就是需要將form的enctype屬性設定為 multipart form data 這個...
Ext檔案上傳事例
一.檔案上傳表單定義 labelalign right buttonalign center labelwidth 65,height 80,frame true,border false,layout table layoutconfig fileupload true,initcomponent...
Ext實戰》節選 自定義單元格的顯示格式
有時候,需要在 grid 中顯示乙個鏈結,或根據數字的大小顯示不同的顏色,又或者使用固定格式顯示記錄編號等,這就需要自定義單元格的顯示格式。在 ext的 grid 可以很容易的實現自定義單元格的顯示格式。在定義 grid 的columnmodel 的時候,在需要自定義顯示格式的列中加入引數 rend...