微信小程序-处理多个文件上传

一、方法的封装


/**
  * 采用递归的方式上传多个文件
  * filePaths 要上传的资源
  * results 上传成功返回的数据
  * successUp 成功个数
  * failUp 失败个数
  * index 上传文件的下标
  */
function uploadOneByOne(filePaths = [], results = [] , successUp = 0, failUp = 0, index = 0) {
  return new Promise((resolve, reject) => {

    if (filePaths.length == 0) {
      resolve(results)
    }

    wx.showLoading({
      title: `正在上传第${index + 1}个`,
    })
    wx.uploadFile({
      url: "https://xxxx.xxx.com/auth/file/upload",//服务器地址
      filePath: filePaths[index],
      name: "file",//对应字段名
      header: { "content-type": "application/json; multipart/form-data;" },
      success: res => {
        successUp++;
        if (res.data) {
          results = results.concat(JSON.parse(res.data));
        }
      },
      fail: res => {
        failUp++;
      },
      complete: res => {
        index++;
        if (index >= filePaths.length) {
          wx.hideLoading();
          console.log('上传成功' + successUp + ',' + '失败' + failUp);
          resolve(results);
        } else {
          uploadOneByOne(filePaths, results, successUp, failUp, index).then(res => {
            resolve(res);
          });
        }
      }
    })
  })
}

二、使用

// 上传图片
if (this.data.chooseImg.length > 0) {
    var that = this;
    that.uploadOneByOne(that.data.chooseImg).then(res => {
        var urls = res.map(item => {
            return `/resource/${item.group}/${item.path}`
        })
        console.log(urls);
    })
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值