1. 程式人生 > 其它 >餓了麼UI el-upload http-request 多檔案進度條失效

餓了麼UI el-upload http-request 多檔案進度條失效

<el-upload
            drag
            multiple
            class="drawing-upload"
            show-file-list
            :action="FileModel.uploadObjectUrl"
            :http-request="httpRequest"
            :limit="50"
            :file-list="fileList"
            :on-remove="handleRemove"
            :on
-success="handleSuccess" :on-error="handleError" :before-upload="beforeUpload" :on-exceed="exceed" > <div class="upload-handle-text"> <div class="el-icon-upload" /> <div class="upload-tips">拖拽或上傳圖紙檔案</div> </div> </el-upload>
/**
* 自定義上傳
*/
httpRequest (file) {
const formData = new FormData()
formData.append('file', file.file)
const extension = file.file.name.indexOf('.') > -1
? `.${file.file.name.split('.').pop()}`
: ''
// http-request 進度條
if (uploadSetting.zip.indexOf(extension) > -1) {
// FileModel.compressPackageFilterUpload為封裝的axios
return FileModel.compressPackageFilterUpload(formData, this.supportFileType, {
onUploadProgress: (progressEvent) => {

const num = progressEvent.loaded / progressEvent.total * 100 | 0
file.onProgress({ percent: num })
}
})
} else {
// FileModel.uploadObject為封裝的axios
return FileModel.uploadObject(formData, {
onUploadProgress: (progressEvent) => {
const num = progressEvent.loaded / progressEvent.total * 100 | 0
file.onProgress({ percent: num })
}
})
}
},

// 上傳檔案(表單上傳,MultipartFile形式),返回檔案物件
uploadObject (formData, config) {
// 注意檔案系統不需要加 apis 字首
return request.post(`${methodsPrefix}/file-systems/multipart-file/file-system`, formData, {
headers: { 'Content-Type': 'multipart/form-data' },
...config
})
}

el-upload 使用 http-request的時候,進度條會不顯示。要想顯示進度條,所以在http-request的時候要加上onUploadProgress監聽進度,然後呼叫餓了麼的檔案物件file.onProgress({ percent: num })更新進度,

有必要的話還需要呼叫file.onSuccess()方法更新檔案上傳成功狀態