關於微信小程序的圖片上傳問題

咱們公司使用的mpvue開發小程序,我在作商品評價這一塊的上傳圖片時遇到一些問題,由於小程序的圖片是單張上傳的,所以我用了for循環將多張圖片循環上傳,我用了兩個數組,一個數組放的是圖片的如今的地址用於顯示在頁面,一個數據放的是上傳圖片至服務器後返回的圖片地址,用於傳遞給後端,可是我發現並非循環一次就執行一遍上傳操做,而是for循環差很少先執行完,纔開始執行上傳操做,這就致使服務器返回的圖片的順序與數組中的順序不同,當我刪除了數組中某個位置的地址,而後再將這張圖片上傳,服務器是根據個人前一個數據的位置返回的,好比刪除了第三張,可是服務器返回的這個第三張的地址多是第二個返回的,而後你在上傳,服務器仍是給你返回第二個,就致使了圖片重複,總而言之就是不能用for循環上傳,那用什麼呢?用遞歸,附上代碼vue

// 上傳圖片
    clickChooseImg() {
      let that = this;
      const s = 0;
      wx.chooseImage({
        count: 4,
        sizeType: ["original", "compressed"],
        sourceType: ["camera",'album'],
        success: function(res) {
          let tempFilePaths = res.tempFilePaths;
          if (tempFilePaths.length != 0) {
            for (let s = 0; s < tempFilePaths.length; s++) {
              that.imageList.push(tempFilePaths[s]);
            };
            that.reqUpload(tempFilePaths, s , tempFilePaths.length);
          }
        }
      })
    },
    // 上傳圖片至七牛
    reqUpload(tempFilePaths, s , len) {
      let that = this
      wx.uploadFile({
        url: "xxxxxxxxxxxxxxxxxxxxxxx",
        filePath: tempFilePaths[s],
        name: "file",
        formData: {
          token: that.token
        },
        success: function(res) {
          that.onlineImageList.push(that.addressPrefix + JSON.parse(res.data).key);
        },
        complete: function(){
          s++;
          if(s < len){
            that.reqUpload(tempFilePaths,s,len);
          }
        }
      })
    },
相關文章
相關標籤/搜索