Element UI upload 自定義上傳進度 背景 代碼

背景

最近測試了element ui前端框架,用到了upload組件,根據element UI官方文檔裏講,我們直接指定action(上傳文件的url),會直接把上傳的文件封裝成formdata,append(file,File),傳給後端。

但是我的需求是把文件當做files的名字傳入,並且要監控上傳過程。因此需要自定義upload上傳方法。

ps:建議上傳多個文件的時候,一定要一個一個傳文件,而不是一下傳好多文件,因爲有接口超時的問題,如果遇到電腦或者瀏覽器版本太低,導致傳入的文件,都是object,element-ui的設計的也是一個一個傳,即使你一下選擇多個文件也是一個一個傳。

需要監控文件上傳進度,我們需要使用到這兩個鉤子on-progress,on-success.

而自定義upload方法,我們需要使用http-request覆蓋默認的上傳行爲,可以自定義上傳的實現。

整個需求來說,我們並沒有監控具體上傳了多少到服務器,而是監控前端是否把文件發送完了,發送完成了就是100%,但是進度還是進行中,如果返回成功了,證明已經上傳成功了,那麼就是完成狀態。

代碼

ps: 下載文件的工具需要加入config.headers['responseType'] = "blob";config.responseType= "blob"

操作如下:

上傳文件的傳入是uploadSectionFile。

我們需要監控upload進度,因此需要在uploadFile裏面增加一個參數,也就是把當前上傳的參數傳遞給方法。

需要在mutiUploadAttach裏面加入監控操作,並調用on-process鉤子

OnProgress就是在執行on-progress的鉤子函數。

uploadFileProcess(event, file, fileList),記住如果操作這個file,是無效的,因爲我們upload組件綁定的是fileList,因此需要找到fileList中對應的file去操作,是progressFlag=true,successFlag=false纔有效。

到了這一步,我們就知道了,file發送的進度。

接下來就是接收完成的回調,因爲發送完成,後端處理也需要一定時間,在沒有返回成功之前也應該是on-progress. 所以progressFlag=true,successFlag=false。

如果文件上傳完成了,就調用onSuccess方法,把文件進度條設置成完成狀態。

至此,自定義上傳進度完成。

下圖是前端發送文件的狀態

下圖是接受到文件上傳成功的狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章