+
80
-

微信小程序多张图片同时并发上传代码怎么写?

请问微信小程序多张图片同时并发上传代码怎么写?

网友回复

+
0
-
data:{
files:[],
previewfiles:[],
},
chooseImage:function (e) {
 
    var self =this;
 
    let files = self.data.files || [];
    let maxLength = 3;
    let count = maxLength - files.length;
 
    wx.chooseImage({
      count: count,
      sizeType: ['original','compressed'],// 可以指定是原图还是压缩图,默认二者都有
      sourceType: ['album','camera'],// 可以指定来源是相册还是相机,默认二者都有
      success:function (res) {
        // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
        let imageUrl = res.tempFilePaths;
        console.log("chooseImage imageUrl=>", imageUrl)
 
        var p = [];
        imageUrl.forEach((it, index) => {
          self.setData({
            files: self.data.files.concat(it),
            previewfiles: self.data.previewfiles.concat(it)
          });
          var myPromise =new Promise((resolve, reject) => {
            self.uploadfileMultiple(it,function (relativePath) {
         
              resolve(relativePath[0]);
            });
          });
          p.push(myPromise);
        });
        console.log("p=>", p); // 数组
        Promise.all(p).then(uploadFiles => {
          console.log("relativePath uploadFiles=>", uploadFiles);
          self.setData({
            uploadFiles: uploadFiles
          });
        }, reason => {
          console.log("relativePath reason=>", reason);
        });
 
 
      }
    });
 
 
     
  },
  uploadfileMultiple:function (filePath, callback) {
    var self =this;
    var ticket = wx.getStorageSync('ticket');
    try {
      let formData = {
        ticket: ticket,
        folder:"folder/pic"
      }
 
      console.log("formData=>", formData)
      wx.uploadFile({
        url:'后端上传文件接口地址',// 仅为示例,非真实的接口地址
        filePath: filePath,
        name:'file',
        formData: formData,
        success(res) {
          console.log("wx.uploadFile res=>", res);
 
          let resData = res.data;
 
          if (typeof resData =="string") {
            resData = JSON.parse(resData);
          }
          if (resData.rstId == 1) {
            let obj = resData.object || [];
            let relativePath = obj[0].relativePath;
            if (!!callback) {
              callback([relativePath]);
            }
 
          }else {
            wx.showToast({
              title:'上传失败',
            })
          }
        }
      },true)
    }catch (e) {
      console.log(e)
    }
  },

我知道答案,我要回答