收藏
回答

为什么我用wx.cloud.uploadFile批量上传图片,图片id会有重复。打断点执行就正常?

uploadImage(fileURL) {
    // wx.cloud.init({
    //   env: 'tyf-yhkbz'
    // })//初始化
    for (let i = 0; i < this.data.imgList.length; i++) {      
    wx.cloud.uploadFile({
      cloudPath:  'post/' +new Date().getTime() + '.png' , // 上传至云端的路径
      filePath: fileURL[i], // 小程序临时文件路径
      successres => {
        // 返回文件 ID
        console.log("上传成功", res)
        //获取文件路径
        
        let imgURL = res.fileID
        this.setData({
          imgURL: res.fileID,
         
        })
        util.request(api.SavaPostPicture, { 
      
          imgURL: imgURL,
          postId:this.data.postId,
          // agent: agent,
        }).then(function (res{
          if (res.errno == 0) {
          }
        });
      },
      failconsole.error
    })
    }
  },

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

2 个回答

  • xplee
    xplee
    2020-07-14

    异步了解下,已经有人回答过了

    https://developers.weixin.qq.com/community/develop/doc/000268fb1a4c18df6ad999a8c56000?_at=1594735793682

    2020-07-14
    有用
    回复 6
    • Ivan
      Ivan
      2020-07-14
      2020-07-14
      1
      回复
    • Ivan
      Ivan
      2020-07-14
      2020-07-14
      回复
    • xplee
      xplee
      2020-07-14回复Ivan
      好像之前的异步写法也没问题,文件名上再拼上一个index试试(看云存储是不是成功上传了三张不同的图)
      2020-07-14
      1
      回复
    • Ivan
      Ivan
      2020-07-14回复xplee
      哇 文件路径加上index就完全没问题了,这是为啥呀
      2020-07-14
      回复
    • Ivan
      Ivan
      2020-07-14
      谢谢
      2020-07-14
      回复
    查看更多(1)
  • Ivan
    Ivan
    2020-07-14

    2020-07-14
    有用
    回复 3
    • 晓
      2021-03-10
      wx.showLoading({
              title: "上传中",
            })
            let promiseFileIds = [];
            uploadImage.forEach(function(item,index){
              promiseFileIds.push(new Promise((reslove, reject) => {
                wx.cloud.uploadFile({
                  cloudPath: 'uploadImage/'+new Date().getTime() +.jpg, //防止文件名重复,使用时间戳
                  filePath: item, // 文件路径
                  success: res => {
                    self.setData({
                      fileIDList: this.data.fileIDList.concat(res.fileID)
                    })
                    reslove();
                    wx.hideLoading();
                    wx.showToast({
                      title: "上传成功",
                    })
                  },
                  fail: err => {
                    wx.hideLoading();
                    wx.showToast({
                      title: "上传失败"
                    })
                    console.log(err);
                  }
                })
              }))
            })
            Promise.all(promiseFileIds).then(res => {//等数组都做完后做then方法
               console.log(promiseFileIds);
             })
      2021-03-10
      回复
    • 晓
      2021-03-10
      我也是多个图片上传,我这里按照你上面写了,图片上传到云存储了,可是 Promise.all(promiseFileIds).then(res => {
               console.log(promiseFileIds);
             })方法为什么没进去啊
      2021-03-10
      回复
    • 晓
      2021-03-10
      好像是根本没进success: res =>回调方法里面,大佬可以指教一下吗
      2021-03-10
      回复
登录 后发表内容
问题标签