WebUploader是由Baidu WebFE(FEX)團隊開發的一個簡單的以HTML5為主,FLASH為輔的現代文件上傳組件。支持大文件分片並發上傳。
具體api文檔參考:http://fex.baidu.com/webuploader/doc/index.html
以下是最近使用中遇到的一些坑,歡迎大佬吐槽和糾正。
1、uploader初始化時,uploader的 events 都會被執行一遍。因此,若是要使用uploadFinished監聽文件上傳結束,然后提交表單,可能會出錯。
2、在文件服務器不支持批量上傳時,uploader開啟多個線程上傳會出錯。原因是在不支持批量上傳時采用的策略是 文件初始化->上傳
由於文件服務器為每個文件分配了唯一的存放地址,因此每個文件上傳前都需要修改uploader.options.server 如果一個文件在上傳前,另一個線程里的文件修改了 server 地址,那么前一個文件就會上傳失敗。此時用單線程較為穩妥。
3、自動上傳的問題。webuploader支持自動上傳,也支持分片上傳,但是在設置了自動上傳的情況下無法分片上傳(具體原因不知)。
4、暫停和繼續上傳的問題。upload.stop(file)有效,但是暫停后無法繼續上傳。可以使用 upload.stop(true)/upload.upload() 實現對整個隊列的暫停/開始。
5、相同文件無法重復上傳。解決辦法是 uploader.destroy() -> new uploader
6、

對圖中上傳隊列的文件進行刪除操作。uploader.removeFile(file, true) 執行后 uploader.getFiles() 並沒有發生變化。原因是 getFiles() 在不傳遞參數的時候返回的是所有狀態的文件。包括:
- inited 初始狀態
- queued 已經進入隊列, 等待上傳
- progress 上傳中
- complete 上傳完成。
- error 上傳出錯,可重試
- interrupt 上傳中斷,可續傳。
- invalid 文件不合格,不能重試上傳。會自動從隊列中移除。
- cancelled 文件被移除