收藏
回答

wx.uploadFile,能一次上传多张图片么?

用wx.uploadFile,循环上传图片的话,可以一次同时上传几张图片嘛,因为同时还有其他参数要上传,循环的话就一起循环了

回答关注问题邀请回答
收藏

4 个回答

  • Tony Stark
    Tony Stark
    2022-11-22

    Promise.all

    2022-11-22
    有用
    回复
  • 睡前原谅一切
    睡前原谅一切
    2022-05-30
    /*
      uploadFile 上传文件公共方法
      @params: successCb 回调函数
      @params: data 已存在的图片,用来判断还可以上传几张
      @params: together 是否用for循环一起上传,false的话就用自循环一张一张上传有then去监听完成上传
      */
      uploadFiles(successCb, data, isTogether = true, count = 9) {
        return new Promise(resolve => {
          // 一共选了几张
          wx.chooseImage({
            count: count - data.length, // 默认9
            sizeType: ["compressed"], // 可以指定是原图还是压缩图,默认二者都有
            sourceType: ["album", "camera"], // 可以指定来源是相册还是相机,默认二者都有
            success: (res) => {
              let uploadImgList = res.tempFilePaths
              if(uploadImgList.length) {
                wx.showLoading({
                  title: '正在上传照片'
                })
                if(isTogether) {
                  this.uploadImgFilesTogether(this, uploadImgList, successCb)
                } else {
                  this.uploadImgFiles(this, uploadImgList, successCb).then(res => {
                    resolve(res)
                  })
                }
              }
            }
          })
        });
      },
      // 自执行上传,一张传完后下一张
      uploadImgFiles(that, tempFilePaths, successCb) {
        return new Promise(resolve => {
          let index = 0
          let result = []
          function uploads() {
            that.uploadImgFile([tempFilePaths[index]], successCb, true).then(res => {
              index++
              result.push(res)
              if(index < tempFilePaths.length) {
                uploads()
              } else {
                let successArr = result.filter(i => i === true)
                let failArr= result.filter(i => i === false)
                resolve({
                  total: result.length, // 上传总数
                  successLen: successArr.length, // 上传成功
                  failLen: failArr.length, //上传失败
                })
              }
            })
          }
          uploads()
        })
      },
      // 循环上传,大家一起上传
      uploadImgFilesTogether(that, tempFilePaths, successCb) {
        for(let i=0;i {
          wx.uploadFile({
            url: 'xxx',
            filePath: path[0],
            name: "image",
            header: {
              chartset: "utf-8",
              "content-type": "multipart/form-data"
            },
            formData: {
              token: 'xxx'
            },
            success: (res) => {
              if (res.statusCode !== 200) {
                resolve(false)
                !isNext && wx.showToast({title: '上传失败,请稍后重试'})
                return;
              } else {
                try {
                  let data = JSON.parse(res.data);
                  if (data.success) {
                    resolve(true)
                    successCb && successCb(data.data);
                  } else {
                    resolve(false)
                    !isNext && wx.showToast({title: '上传失败,请稍后重试'})
                    return;
                  }
                } catch (err) {
                  resolve(false)
                  !isNext && wx.showToast({title: '上传失败,请稍后重试'})
                  return;
                }
              }
            },
            fail: (e) => {
              resolve(false)
              !isNext && wx.showToast({title: '上传失败,请稍后重试'})
            }
          })
        });
      },
    


    其他参数在你这些图片上传成功后返回oss地址后,你通过字符串拼接再跟你的其他参数一起提交。

    2022-05-30
    有用
    回复
  • 微盟
    微盟
    2022-05-30

    暂不支持,但能选择多张图片,封装一下上传方法,写个循环可解决问题。

    2022-05-30
    有用
    回复
  • Frank
    Frank
    2022-05-30

    目前只能循环上传

    2022-05-30
    有用
    回复
登录 后发表内容