饿了么批量文件上传

饿了么这个一次性上传多文件的功能有点坑呀,

首先第一点:饿了么的上传前回调一起触发的,触发完毕之后才依次触发上传成功回调,当选了多个文件的时候也是如此;

第二点:对于filelist,如果你每次在上传成功回调里将文件信息push到filelist进去,这样单文件上传是没问题的,但是批量上传时会报错的,报错节点在饿了么内部源码:

handleProgress: function handleProgress(ev, rawFile) {
      var file = this.getFile(rawFile);
      this.onProgress(ev, file, this.uploadFiles);
      file.status = 'uploading';
      file.percentage = ev.percent || 0;
    },

代码第二次走到这里时,file.status报错,因为file为undefined,因为在getfile方法里,获取到的uploadFiles变量只存了第一个文件的信息,理论上应该是多条的的。

所以多批量上传时,可以变量专门用来计数(number),在上传文件成功时将文件信息存到一个临时变量(uploadList)里,当临时变量长度跟计数相等时,再将临时变量的文件信息一次性赋值给filelist变量。

具体做法如下:

1.在上传回调里对计数变量number进行++

2.代码如下:

handleUploadSuccess(res) { // 上传成功回调
      console.log(res,'res');
      this.uploadList.push({ name: res.fileName, url: res.fileName });
      if (this.uploadList.length === this.number) {
        this.fileList = this.fileList.concat(this.uploadList);
        this.uploadList = [];
        this.number = 0;
        this.$emit("input", this.listToString(this.fileList));
        this.$modal.closeLoading();
      }
    },

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值