功能:多文件上传,统一提交

一、需求:

前端实现多文件上传,统一提交上传后服务器返回来的数据,最后一个文件上传完成后立即提交保存,不能间隔时间。

二、思路分析:

2.1、点击上传-->调用file方法-->调用upload方法,我们定义两个变量flagA和flagB,分别记录两个方法执行的次数,每次执行+=1,file先执行,upload后执行,所以upload方法结束后我们我们比较flagA和flagB的值,如果flagA大于flagB说明还有文件要上传,如果flagA等于flagB说明已经是最后一个文件了。这个时机就是我们调用保存的时机。

2.2、以上传三个文件为例:

file upload 对比flag 结果
文件1 flagA+=1 flagB+=1 flagA > flagB 没有上传完成
文件2 flagA+=1 flagA+=1 flagA > flagB 没有上传完成
文件3 flagA+=1 flagA+=1 flagA = flagB 上传完成,执行方法

三、代码:

3.1、定义flag:

flagA: 0, // 记录file
flagB: 0, // 记录upload

3.2、记录file:

toRequestFile(data) {
   this.flagA += 1
   this.toRequest(data, 'file');
},

3.3、记录upload:

toRequest(data, type) {
      const fd = new FormData();
      fd.append('file', data.file);
      commonUpload(fd).then(res=>{
        this.$message({ type: 'success', message: '上传成功' });
      }).finally(()=>{
        this.flagB += 1 // 记录upload
        console.log('914flagA-flagB', this.flagA, this.flagB)
      })
    },

3.4、效果:

 

 上传三个文件,三次次upload执行完成打印3,3,说明三个文件都执行完成。

四、欢迎交流指正,关注我,一起学习。

你可能感兴趣的:(前端,elementui,vue.js,前端)