微信小程序上传多张图片

Page({

  /**
   * 页面的初始数据
   */
  data: {
    pics: [],
    count: 9, //上传图片最大数量
    // showImgUrl: "", //路径拼接,一般上传返回的都是文件名,
    uploadImgUrl: 'https://xxx/UploadHandler.ashx', //图片的上传的路径
    detailPics: [], //上传的结果图片集合
  },
  selectimages() {
    var that = this;
    var detailPics = that.data.detailPics;
    if (detailPics.length >= that.data.count) {
      wx.showToast({
        title: '最多选择' + that.data.count + '张!',
      })
      return;
    }
    wx.chooseImage({
      count: that.data.count, // 最多可以选择的图片张数,默认9
      sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
      sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
      success: function(res) {
        var imgs = res.tempFilePaths;
        for (var i = 0; i < imgs.length; i++) {
          that.data.pics.push(imgs[i])
        }
        that.setData({
          pics: that.data.pics
        })
        console.log(that.data.pics)
         that.uploadimg({
          url: that.data.uploadImgUrl, //这里是你图片上传的接口
          path: that.data.pics, //这里是选取的图片的地址数组
        });
      },
    })
  },
  //多张图片上传
  uploadimg: function(data) {
    wx.showLoading({
      title: '上传图片中...',
      mask: true,
    })
    var that = this,
      i = data.i ? data.i : 0,
      success = data.success ? data.success : 0,
      fail = data.fail ? data.fail : 0;
    wx.uploadFile({
      url: data.url,
      filePath: data.path[i],
      name: 'fileData',
      formData: null,
      success: (resp) => {
        wx.hideLoading();
        success++;
        var str = resp.data //返回的结果,可能不同项目结果不一样
        var pic = JSON.parse(str);
        var pic_name = pic.url;
        var detailPics = that.data.detailPics;
        detailPics.push(pic_name)
        that.setData({
          detailPics: detailPics
        })
      },
      fail: (res) => {
        fail++;
        console.log('fail:' + i + "fail:" + fail);
      },
      complete: () => {
        i++;
        if (i == data.path.length) { //当图片传完时,停止调用     
          that.send()
          console.log('执行完毕');
          console.log('成功:' + success + " 失败:" + fail);
          var myEventDetail = {
            picsList: that.data.detailPics
          } // detail对象,提供给事件监听函数
          var myEventOption = {} // 触发事件的选项
          that.triggerEvent('myevent', myEventDetail, myEventOption) //结果返回调用的页面
        } else { //若图片还没有传完,则继续调用函数
          data.i = i;
          data.success = success;
          data.fail = fail;
          that.uploadimg(data); //递归,回调自己
        }
      }
    });
  },
})

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值