餓了麼UI el-upload http-request 多檔案進度條失效
阿新 • • 發佈:2021-07-07
<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()方法更新檔案上傳成功狀態