原文参考链接 https://blog.youkuaiyun.com/qq_33270001/article/details/114490955
必需属性:
- :on-change=“handleChange”
- :multiple=“multiple”
- :auto-upload=“false”
关键1:handleChange()
this.fileTotal = document.getElementsByName(this.uploadId)[0].files.length;
关键2:httpRequest()
const formDataLen = this.formData.getAll(this.formKey).length;
部分代码:
<el-upload
:ref="`upLoadFile-${uploadId}`"
:name="uploadId"
:on-change="handleChange"
:http-request="httpRequest"
:multiple="multiple"
:auto-upload="false"
handleChange(file) {
(file.status === 'ready') && this.BSfileList.push(file);
this.fileTotal = document.getElementsByName(this.uploadId)[0].files.length;
if (this.BSfileList.length === this.fileTotal) {
// 获取上传文件的组件
const UploaderIns = this.$refs[`upLoadFile-${this.uploadId}`];
UploaderIns.submit();
}
},
httpRequest(file) {
this.formData.append(this.formKey, file.file);
const formDataLen = this.formData.getAll(this.formKey).length;
if (formDataLen === this.fileTotal) {
fileUpload(this.formData, global.ctmsApi + this.requestUrl)
.then((res) => {
this.handleSuccess(res.data);
})
.catch(() => {
this.$refs[`upLoadFile-${this.uploadId}`].uploadFiles;
const refUploadFiles = this.$refs[`upLoadFile-${this.uploadId}`].uploadFiles;
for (let i = refUploadFiles.length - 1; i > -1; i -= 1) {
const hasSame = this.BSfileList.findIndex((v) => v.uid === refUploadFiles[i].uid) > -1;
hasSame ? refUploadFiles.splice(i, 1) : '';
}
})
.finally(() => {
this.BSfileList = [];
this.formData.delete(this.formKey);
this.closeLoading();
});
}
},