《Ext實戰》節選 檔案上傳

2021-08-29 19:23:37 字數 3597 閱讀 4135

《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...