WebUploader API 文件詳細解讀

WebUploader發表於2015-03-25

Web Uploader內部類的詳細說明,以下提及的功能類,都可以在WebUploader這個變數中訪問到。

As you know, Web Uploader的每個檔案都是用過AMD規範中的define組織起來的, 每個Module都會有個module id. 預設module id為該檔案的路徑,而此路徑將會轉化成名字空間存放在WebUploader中。如:

  • module base:WebUploader.Base
  • module file: WebUploader.File
  • module lib/dnd: WebUploader.Lib.Dnd
  • module runtime/html5/dnd: WebUploader.Runtime.Html5.Dnd

以下文件中對類的使用可能省略掉了WebUploader字首。

Uploader

  • new Uploader( opts ) ⇒ Uploader

上傳入口類。

var uploader = WebUploader.Uploader({
    swf: 'path_of_swf/Uploader.swf',

    // 開起分片上傳。
    chunked: true
});

引數說明

    • dnd {Selector} [可選] [預設值:undefined]指定Drag And Drop拖拽的容器,如果不指定,則不啟動。
    • disableGlobalDnd {Selector} [可選] [預設值:false]是否禁掉整個頁面的拖拽功能,如果不禁用,圖片拖進來的時候會預設被瀏覽器開啟。
    • paste {Selector} [可選] [預設值:undefined]指定監聽paste事件的容器,如果不指定,不啟用此功能。此功能為通過貼上來新增截圖的圖片。建議設定為document.body.
    • pick {Selector, Object} [可選] [預設值:undefined]指定選擇檔案的按鈕容器,不指定則不建立按鈕。
      • id {Seletor|dom} 指定選擇檔案的按鈕容器,不指定則不建立按鈕。注意 這裡雖然寫的是 id, 但是不是隻支援 id, 還支援 class, 或者 dom 節點。
      • label {String} 請採用 innerHTML 代替
      • innerHTML {String} 指定按鈕文字。不指定時優先從指定的容器中看是否自帶文字。
      • multiple {Boolean} 是否開起同時選擇多個檔案能力。
    • accept {Arroy} [可選] [預設值:null]指定接受哪些型別的檔案。 由於目前還有ext轉mimeType表,所以這裡需要分開指定。
      • title {String} 文字描述
      • extensions {String} 允許的檔案字尾,不帶點,多個用逗號分割。
      • mimeTypes {String} 多個用逗號分割。

      如:

      {
          title: 'Images',
          extensions: 'gif,jpg,jpeg,bmp,png',
          mimeTypes: 'image/*'
      }

thumb {Object} [可選]

配置生成縮圖的選項。

預設為:

{
    width: 110,
    height: 110,

    // 圖片質量,只有type為`image/jpeg`的時候才有效。
    quality: 70,

    // 是否允許放大,如果想要生成小圖的時候不失真,此選項應該設定為false.
    allowMagnify: true,

    // 是否允許裁剪。
    crop: true,

    // 為空的話則保留原有圖片格式。
    // 否則強制轉換成指定的型別。
    type: 'image/jpeg'
}

compress {Object} [可選]

配置壓縮的圖片的選項。如果此選項為false, 則圖片在上傳前不進行壓縮。

預設為:

{
    width: 1600,
    height: 1600,

    // 圖片質量,只有type為`image/jpeg`的時候才有效。
    quality: 90,

    // 是否允許放大,如果想要生成小圖的時候不失真,此選項應該設定為false.
    allowMagnify: false,

    // 是否允許裁剪。
    crop: false,

    // 是否保留頭部meta資訊。
    preserveHeaders: true,

    // 如果發現壓縮後檔案大小比原來還大,則使用原來圖片
    // 此屬性可能會影響圖片自動糾正功能
    noCompressIfLarger: false,

    // 單位位元組,如果圖片大小小於此值,不會採用壓縮。
    compressSize: 0
}
  • auto {Boolean} [可選] [預設值:false]設定為 true 後,不需要手動呼叫上傳,有檔案選擇即開始上傳。
  • runtimeOrder {Object} [可選] [預設值:html5,flash]指定執行時啟動順序。預設會想嘗試 html5 是否支援,如果支援則使用 html5, 否則則使用 flash.可以將此值設定成 flash,來強制使用 flash 執行時。
  • prepareNextFile {Boolean} [可選] [預設值:false]是否允許在檔案傳輸時提前把下一個檔案準備好。 對於一個檔案的準備工作比較耗時,比如圖片壓縮,md5序列化。 如果能提前在當前檔案傳輸期處理,可以節省總體耗時。
  • chunked {Boolean} [可選] [預設值:false]是否要分片處理大檔案上傳。
  • chunkSize {Boolean} [可選] [預設值:5242880]如果要分片,分多大一片? 預設大小為5M.
  • chunkRetry {Boolean} [可選] [預設值:2]如果某個分片由於網路問題出錯,允許自動重傳多少次?
  • threads {Boolean} [可選] [預設值:3]上傳併發數。允許同時最大上傳程式數。
  • formData {Object} [可選] [預設值:{}]檔案上傳請求的參數列,每次傳送都會傳送此物件中的引數。
  • fileVal {Object} [可選] [預設值:'file']設定檔案上傳域的name。
  • method {Object} [可選] [預設值:'POST']檔案上傳方式,POST或者GET
  • sendAsBinary {Object} [可選] [預設值:false]是否已二進位制的流的方式傳送檔案,這樣整個上傳內容php://input都為檔案內容, 其他引數在$_GET陣列中。
  • fileNumLimit {int} [可選] [預設值:undefined]驗證檔案總數量, 超出則不允許加入佇列。
  • fileSizeLimit {int} [可選] [預設值:undefined]驗證檔案總大小是否超出限制, 超出則不允許加入佇列。
  • fileSingleSizeLimit {int} [可選] [預設值:undefined]驗證單個檔案大小是否超出限制, 超出則不允許加入佇列。
  • duplicate {Boolean} [可選] [預設值:undefined]去重, 根據檔名字、檔案大小和最後修改時間來生成hash Key.
  • disableWidgets {String, Array} [可選] [預設值:undefined]預設所有 Uploader.register 了的 widget 都會被載入,如果禁用某一部分,請通過此 option 指定黑名單。

事件說明

事件名 引數說明 描述
dndAccept
  • items{DataTransferItemList}DataTransferItem
阻止此事件可以拒絕某些型別的檔案拖入進來。目前只有 chrome 提供這樣的 API,且只能通過 mime-type 驗證。
beforeFileQueued
  • file {File}File物件
當檔案被加入佇列之前觸發,此事件的handler返回值為false,則此檔案不會被新增進入佇列。
fileQueued
  • file {File}File物件
當檔案被加入佇列以後觸發。
filesQueued
  • files {File}陣列,內容為原始File(lib/File)物件。
當一批檔案新增進佇列以後觸發。
fileDequeued
  • file {File}File物件
當檔案被移除佇列後觸發。
reset 當 uploader 被重置的時候觸發。
startUpload 當開始上傳流程時觸發。
stopUpload 當開始上傳流程暫停時觸發。
uploadFinished 當所有檔案上傳結束時觸發。
uploadStart
  • file {File}File物件
某個檔案開始上傳前觸發,一個檔案只會觸發一次。
uploadBeforeSend
  • object {Object}
  • data {Object}預設的上傳引數,可以擴充套件此物件來控制上傳引數。
  • headers {Object}可以擴充套件此物件來控制上傳頭部。
當某個檔案的分塊在傳送前觸發,主要用來詢問是否要新增附帶引數,大檔案在開起分片上傳的前提下此事件可能會觸發多次。
uploadAccept
  • object {Object}
  • ret {Object}服務端的返回資料,json格式,如果服務端不是json格式,從ret._raw中取資料,自行解析。
當某個檔案上傳到服務端響應後,會派送此事件來詢問服務端響應是否有效。如果此事件handler返回值為false, 則此檔案將派送server型別的uploadError事件。
uploadProgress
  • file {File}File物件
  • percentage {Number}上傳進度
上傳過程中觸發,攜帶上傳進度。
uploadError
  • file {File}File物件
  • reason {String}出錯的code
當檔案上傳出錯時觸發。
uploadSuccess
  • file {File}File物件
  • response {Object}服務端返回的資料
當檔案上傳成功時觸發。
uploadComplete
  • file {File} [可選]File物件
不管成功或者失敗,檔案上傳完成時觸發。
error
  • type {String}錯誤型別。
當validate不通過時,會以派送錯誤事件的形式通知呼叫者。通過upload.on('error', handler)可以捕獲到此類錯誤,目前有以下錯誤會在特定的情況下派送錯來。
  • Q_EXCEED_NUM_LIMIT 在設定了fileNumLimit且嘗試給uploader新增的檔案數量超出這個值時派送。
  • Q_EXCEED_SIZE_LIMIT 在設定了Q_EXCEED_SIZE_LIMIT且嘗試給uploader新增的檔案總大小超出這個值時派送。
  • Q_TYPE_DENIED 當檔案型別不滿足時觸發。。

option

  • option( key ) ⇒ *
  • option( key, val ) ⇒ self

獲取或者設定Uploader配置項。

// 初始狀態圖片上傳前不會壓縮
var uploader = new WebUploader.Uploader({
    compress: null;
});

// 修改後圖片上傳前,嘗試將圖片壓縮到1600 * 1600
uploader.option( 'compress', {
    width: 1600,
    height: 1600
});

getStats

  • getStats() ⇒ Object

獲取檔案統計資訊。返回一個包含一下資訊的物件。

  • successNum 上傳成功的檔案數
  • progressNum 上傳中的檔案數
  • cancelNum 被刪除的檔案數
  • invalidNum 無效的檔案數
  • uploadFailNum 上傳失敗的檔案數
  • queueNum 還在佇列中的檔案數
  • interruptNum 被暫停的檔案數

destroy

  • destroy() ⇒ undefined

銷燬 webuploader 例項

addButton

  • addButton( pick ) ⇒ Promise

新增檔案選擇按鈕,如果一個按鈕不夠,需要呼叫此方法來新增。引數跟options.pick一致。

uploader.addButton({
    id: '#btnContainer',
    innerHTML: '選擇檔案'
});

makeThumb

  • makeThumb( file, callback ) ⇒ undefined
  • makeThumb( file, callback, width, height ) ⇒ undefined

生成縮圖,此過程為非同步,所以需要傳入callback。 通常情況在圖片加入隊裡後呼叫此方法來生成預覽圖以增強互動效果。

當 width 或者 height 的值介於 0 – 1 時,被當成百分比使用。

callback中可以接收到兩個引數。

  • 第一個為error,如果生成縮圖有錯誤,此error將為真。
  • 第二個為ret, 縮圖的Data URL值。

注意 Date URL在IE6/7中不支援,所以不用呼叫此方法了,直接顯示一張暫不支援預覽圖片好了。 也可以藉助服務端,將 base64 資料傳給服務端,生成一個臨時檔案供預覽。

uploader.on( 'fileQueued', function( file ) {
    var $li = ...;

    uploader.makeThumb( file, function( error, ret ) {
        if ( error ) {
            $li.text('預覽錯誤');
        } else {
            $li.append('<img alt="" src="' + ret + '" />');
        }
    });

});

md5File

  • md5File( file[, start[, end]] ) ⇒ promise

計算檔案 md5 值,返回一個 promise 物件,可以監聽 progress 進度。

uploader.on( 'fileQueued', function( file ) {
    var $li = ...;

    uploader.md5File( file )

        // 及時顯示進度
        .progress(function(percentage) {
            console.log('Percentage:', percentage);
        })

        // 完成
        .then(function(val) {
            console.log('md5 result:', val);
        });

});

addFiles

  • addFiles( file ) ⇒ undefined
  • addFiles( [file1, file2 ...] ) ⇒ undefined

引數:

  • files {Array of File or File} [可選]Files 物件 陣列

新增檔案到佇列

removeFile

removeFile( file ) ⇒ undefined
removeFile( id ) ⇒ undefined
removeFile( file, true ) ⇒ undefined
removeFile( id, true ) ⇒ undefined

引數:

  • file {File, id}File物件或這File物件的id

移除某一檔案, 預設只會標記檔案狀態為已取消,如果第二個引數為 true 則會從 queue 中移除。

$li.on('click', '.remove-this', function() {
    uploader.removeFile( file );
})

getFiles

  • getFiles() ⇒ Array
  • getFiles( status1, status2, status… ) ⇒ Array

返回指定狀態的檔案集合,不傳引數將返回所有狀態的檔案。

console.log( uploader.getFiles() );    // => all files
console.log( uploader.getFiles('error') )    // => all error files.

retry

  • retry() ⇒ undefined
  • retry( file ) ⇒ undefined

重試上傳,重試指定檔案,或者從出錯的檔案開始重新上傳。

function retry() {
    uploader.retry();
}

sort

  • sort( fn ) ⇒ undefined

排序佇列中的檔案,在上傳之前調整可以控制上傳順序。

reset

  • reset() ⇒ undefined

重置uploader。目前只重置了佇列。

uploader.reset();

predictRuntimeType

  • predictRuntimeType() ⇒ String

預測Uploader將採用哪個Runtime

upload

  • upload() ⇒ undefined
  • upload( file | fileId) ⇒ undefined

開始上傳。此方法可以從初始狀態呼叫開始上傳流程,也可以從暫停狀態呼叫,繼續上傳流程。

可以指定開始某一個檔案。

stop

  • stop() ⇒ undefined
  • stop( true ) ⇒ undefined
  • stop( file ) ⇒ undefined

暫停上傳。第一個引數為是否中斷上傳當前正在上傳的檔案。

如果第一個引數是檔案,則只暫停指定檔案。

cancelFile

  • cancelFile( file ) ⇒ undefined
  • cancelFile( id ) ⇒ undefined

引數:

  • file {File, id}File物件或這File物件的id

標記檔案狀態為已取消, 同時將中斷檔案傳輸。

$li.on('click', '.remove-this', function() {
    uploader.cancelFile( file );
})

sInProgress

  • isInProgress() ⇒ Boolean

判斷Uplaoder是否正在上傳中。

skipFile

  • skipFile( file ) ⇒ undefined

掉過一個檔案上傳,直接標記指定檔案為已上傳狀態。

request

  • request( command, args ) ⇒ * | Promise
  • request( command, args, callback ) ⇒ Promise

傳送命令。當傳入callback或者handler中返回promise時。返回一個當所有handler中的promise都完成後完成的新promise

Uploader.register

  • Uploader.register(proto);
  • Uploader.register(map, proto);

引數:

  • responseMap {object}API 名稱與函式實現的對映
  • proto {object}元件原型,建構函式通過 constructor 屬性定義

新增元件

Uploader.register({
    'make-thumb': 'makeThumb'
}, {
    init: function( options ) {},
    makeThumb: function() {}
});

Uploader.register({
    'make-thumb': function() {

    }
});

Uploader.unRegister

  • Uploader.unRegister(name);

引數:

  • name {string}元件名字

刪除外掛,只有在註冊時指定了名字的才能被刪除。

Uploader.register({
    name: 'custom',

    'make-thumb': function() {

    }
});

Uploader.unRegister('custom');

Base

基礎類,提供一些簡單常用的方法。

create

  • Base.create( opts ) ⇒ Uploader

建立Uploader例項,等同於new Uploader( opts );

version

當前版本號。

$

引用依賴的jQuery或者Zepto物件。

browser

簡單的瀏覽器檢查結果。

  • webkit webkit版本號,如果瀏覽器為非webkit核心,此屬性為undefined
  • chrome chrome瀏覽器版本號,如果瀏覽器為chrome,此屬性為undefined
  • ie ie瀏覽器版本號,如果瀏覽器為非ie,此屬性為undefined暫不支援ie10+
  • firefox firefox瀏覽器版本號,如果瀏覽器為非firefox,此屬性為undefined
  • safari safari瀏覽器版本號,如果瀏覽器為非safari,此屬性為undefined
  • opera opera瀏覽器版本號,如果瀏覽器為非opera,此屬性為undefined

os

作業系統檢查結果。

  • android 如果在android瀏覽器環境下,此值為對應的android版本號,否則為undefined
  • ios 如果在ios瀏覽器環境下,此值為對應的ios版本號,否則為undefined

inherits

  • Base.inherits( super ) ⇒ child
  • Base.inherits( super, protos ) ⇒ child
  • Base.inherits( super, protos, statics ) ⇒ child

引數:

  • super {Class}父類
  • protos {Object, Function} [可選]子類或者物件。如果物件中包含constructor,子類將是用此屬性值。
    • constructor {Function} [可選]子類構造器,不指定的話將建立個臨時的直接執行父類構造器的方法。
  • statics {Object} [可選]靜態屬性或方法。

返回值:

  • {Class}返回子類。

實現類與類之間的繼承。

function Person() {
    console.log( 'Super' );
}
Person.prototype.hello = function() {
    console.log( 'hello' );
};

var Manager = Base.inherits( Person, {
    world: function() {
        console.log( 'World' );
    }
});

// 因為沒有指定構造器,父類的構造器將會執行。
var instance = new Manager();    // => Super

// 繼承子父類的方法
instance.hello();    // => hello
instance.world();    // => World

// 子類的__super__屬性指向父類
console.log( Manager.__super__ === Person );    // => true

noop

一個不做任何事情的方法。可以用來賦值給預設的callback.

bindFn

  • Base.bindFn( fn, context ) ⇒ Function

返回一個新的方法,此方法將已指定的context來執行。

var doSomething = function() {
        console.log( this.name );
    },
    obj = {
        name: 'Object Name'
    },
    aliasFn = Base.bind( doSomething, obj );

 aliasFn();    // => Object Name

log

  • Base.log( args… ) ⇒ undefined

引用Console.log如果存在的話,否則引用一個空函式noop

slice

  • Base.slice( target, start[, end] ) ⇒ Array

uncurrythis的陣列slice方法。 將用來將非陣列物件轉化成陣列物件。

function doSomthing() {
    var args = Base.slice( arguments, 1 );
    console.log( args );
}

doSomthing( 'ignored', 'arg2', 'arg3' );    // => Array ["arg2", "arg3"]

guid

  • Base.guid() ⇒ String
  • Base.guid( prefx ) ⇒ String

生成唯一的ID

formatSize

  • Base.formatSize( size ) ⇒ String
  • Base.formatSize( size, pointLength ) ⇒ String
  • Base.formatSize( size, pointLength, units ) ⇒ String

引數:

  • size {Number}檔案大小
  • pointLength {Number} [可選] [預設值: 2]精確到的小數點數。
  • [units=[ {Array}'B', 'K', 'M', 'G', 'TB' ]] 單位陣列。從位元組,到千位元組,一直往上指定。如果單位陣列裡面只指定了到了K(千位元組),同時檔案大小大於M, 此方法的輸出將還是顯示成多少K.

格式化檔案大小, 輸出成帶單位的字串

console.log( Base.formatSize( 100 ) );    // => 100B
console.log( Base.formatSize( 1024 ) );    // => 1.00K
console.log( Base.formatSize( 1024, 0 ) );    // => 1K
console.log( Base.formatSize( 1024 * 1024 ) );    // => 1.00M
console.log( Base.formatSize( 1024 * 1024 * 1024 ) );    // => 1.00G
console.log( Base.formatSize( 1024 * 1024 * 1024, 0, ['B', 'KB', 'MB'] ) );    // => 1024MB

Deferred

  • Base.Deferred() ⇒ Deferred

建立一個Deferred物件。 詳細的Deferred用法說明,請參照jQuery的API文件。

Deferred物件在鉤子回掉函式中經常要用到,用來處理需要等待的非同步操作。

// 在檔案開始傳送前做些非同步操作。
// WebUploader會等待此非同步操作完成後,開始傳送檔案。
Uploader.register({
    'before-send-file': 'doSomthingAsync'
}, {

    doSomthingAsync: function() {
        var deferred = Base.Deferred();

        // 模擬一次非同步操作。
        setTimeout(deferred.resolve, 2000);

        return deferred.promise();
    }
});

isPromise

  • Base.isPromise( anything ) ⇒ Boolean

引數:

  • anything {*}檢測物件。

返回值:

  • {Boolean}

判斷傳入的引數是否為一個promise物件。

console.log( Base.isPromise() );    // => false
console.log( Base.isPromise({ key: '123' }) );    // => false
console.log( Base.isPromise( Base.Deferred().promise() ) );    // => true

// Deferred也是一個Promise
console.log( Base.isPromise( Base.Deferred() ) );    // => true

when

  • Base.when( promise1[, promise2[, promise3...]] ) ⇒ Promise

返回一個promise,此promise在所有傳入的promise都完成了後完成。 詳細請檢視這裡

Mediator

中介者,它本身是個單例,但可以通過installTo方法,使任何物件具備事件行為。 主要目的是負責模組與模組之間的合作,降低耦合度。

on

  • on( name, callback[, context] ) ⇒ self

引數:

  • name {String}事件名,支援多個事件用空格隔開
  • callback {Function}事件處理器
  • context {Object} [可選]事件處理器的上下文。

返回值:

  • {self}返回自身,方便鏈式

繫結事件。

callback方法在執行時,arguments將會來源於trigger的時候攜帶的引數。如

var obj = {};

// 使得obj有事件行為
Mediator.installTo( obj );

obj.on( 'testa', function( arg1, arg2 ) {
    console.log( arg1, arg2 ); // => 'arg1', 'arg2'
});

obj.trigger( 'testa', 'arg1', 'arg2' );

如果callback中,某一個方法return false了,則後續的其他callback都不會被執行到。 切會影響到trigger方法的返回值,為false

on還可以用來新增一個特殊事件all, 這樣所有的事件觸發都會響應到。同時此類callback中的arguments有一個不同處, 就是第一個引數為type,記錄當前是什麼事件在觸發。此類callback的優先順序比腳低,會再正常callback執行完後觸發。

obj.on( 'all', function( type, arg1, arg2 ) {
    console.log( type, arg1, arg2 ); // => 'testa', 'arg1', 'arg2'
});

once

  • once( name, callback[, context] ) ⇒ self

引數:

  • name {String}事件名
  • callback {Function}事件處理器
  • context {Object} [可選]事件處理器的上下文。

返回值:

  • {self}返回自身,方便鏈式

繫結事件,且當handler執行完後,自動解除繫結。

off

  • off( [name[, callback[, context] ] ] ) ⇒ self

引數:

  • name {String} [可選]事件名
  • callback {Function} [可選]事件處理器
  • context {Object} [可選]事件處理器的上下文。

返回值:

  • {self}返回自身,方便鏈式

解除事件繫結

trigger

  • trigger( name[, args...] ) ⇒ self

引數:

  • type {String}事件名
  • ... {*} [可選]任意引數

返回值:

  • {Boolean}如果handler中return false了,則返回false, 否則返回true

觸發事件

installTo

引數:

  • obj {Object}需要具備事件行為的物件。

返回值:

  • {Object}返回obj.

可以通過這個介面,使任何物件具備事件功能。

File

  • new File( source ) ⇒ File

引數:

  • source {Lib.File}lib.File例項, 此source物件是帶有Runtime資訊的。

建構函式

事件說明

事件名 引數說明 描述
statuschange 檔案狀態變化

name

檔名,包括副檔名(字尾)

size

檔案體積(位元組)

lastModifiedDate

檔案最後修改日期

id

檔案ID,每個物件具有唯一ID,與檔名無關

ext

副檔名,通過檔名獲取,例如test.png的副檔名為png

statusText

狀態文字說明。在不同的status語境下有不同的用途。

setStatus

  • setStatus( status[, statusText] );

引數:

  • status {File.Status, String}檔案狀態值
  • statusText {String} [可選] [預設值: '']狀態說明,常在error時使用,用http, abort,server等來標記是由於什麼原因導致檔案錯誤。

設定狀態,狀態變化時會觸發change事件。

File.Status

檔案狀態值,具體包括以下幾種型別:

  • inited 初始狀態
  • queued 已經進入佇列, 等待上傳
  • progress 上傳中
  • complete 上傳完成。
  • error 上傳出錯,可重試
  • interrupt 上傳中斷,可續傳。
  • invalid 檔案不合格,不能重試上傳。會自動從佇列中移除。
  • cancelled 檔案被移除。

Queue

檔案佇列, 用來儲存各個狀態中的檔案。

stats

統計檔案數。

  • numOfQueue 佇列中的檔案數。
  • numOfSuccess 上傳成功的檔案數
  • numOfCancel 被取消的檔案數
  • numOfProgress 正在上傳中的檔案數
  • numOfUploadFailed 上傳錯誤的檔案數。
  • numOfInvalid 無效的檔案數。
  • numofDeleted 被移除的檔案數。

append

引數:

  • file {File}檔案物件

將新檔案加入對佇列尾部

prepend

引數:

  • file {File}檔案物件

將新檔案加入對佇列頭部

getFile

引數:

  • fileId {String}檔案ID

返回值:

  • {File}

獲取檔案物件

fetch

  • fetch( status ) ⇒ File

引數:

返回值:

從佇列中取出一個指定狀態的檔案。

sort

  • sort( fn ) ⇒ undefined

引數:

  • fn {Function}排序方法

對佇列進行排序,能夠控制檔案上傳順序。

getFiles

  • getFiles( [status1[, status2 ...]] ) ⇒ Array

引數:

獲取指定型別的檔案列表, 列表中每一個成員為File物件。

removeFile

  • removeFile( file ) ⇒ Array

引數:

  • 檔案物件。 {File}

在佇列中刪除檔案。

相關文章