微信小程序如何实现批量上传图片?

wx.uploadFile只能一次上传一张, 有什么办法可以实现批量上传吗?

目前官方尚未提供批量上传的api,所以只能自己想办法曲线救国

业务需求

日常我们经常会遇到这样的业务场景,提交表单时,将多张图片和文本数据一起上传到服务器。在web端我们可以利用FormData组装数据来实现。但小程序端是没有浏览器对象的。

曲线救国

开头我们提到了,小程序端没有批量上传的api,结合上面的业务场景,我们分两步走来实现这个需求。

  1. 循环上传图片
submitPic(){
    /**
      this.data.tempFilePaths 用户选择的图片
      URL.uploadImg 服务器接口路径
      docMainId 文件主表ID 首次上传文件时返回 后续其他文件上传时需携带此参数 提交表单时 业务主表通过此参数与多个文件建立关联
      index 文件列表索引值
    */
    if(!this.data.tempFilePaths || this.data.tempFilePaths.length == 0){
      wx.showToast({
        title: '请先上传图片',
        icon:'none',
      })
      return
    }
    wx.showLoading({
      title: '上传中',
      mask: true
    })
    var docMainId = null
    var index = 0;
    //
    (function uploadImage(self){
      if(index < self.data.tempFilePaths.length){
        var url = `${URL.uploadImg}`
        if(docMainId){
          url += `?docMainId=${docMainId}`
        }
        wx.uploadFile({
          url: url,
          filePath: self.data.tempFilePaths[index],
          name: 'uploadImg',
          success:res=> {
            docMainId = res.mainId
            index++
            uploadImage(self)
          }
        })
      }else{
        self.setData({docMainId})
        self.subHandler()
      }

    })(this);
    

  },
  1. 提交表单数据
/**
    URL.subHandler 服务器接口路径
  */
  subHandler(){
    wx.request({
      url: URL.subHandler,
      data:{
        docMainId:this.data.docMainId,
        ...
      },
      success:res=>{
        wx.hideLoading()
        ...
      },
      fail:res=>{
        wx.hideLoading()
        ...
      }
    })
  },
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C 是一种计算机编程语言,由美国贝尔实验室的Dennis Ritchie在20世纪70年代开发。C语言是一种通用的、高级的、基于过程的编程语言,常用于操作系统、编译器和嵌入式系统等领域。 C语言的设计目标是提供高效、直接的硬件访问能力,并具有良好的可移植性。它提供了丰富的数据类型和控制结构,可以实现各种复杂的计算和逻辑操作。C语言的语法相对简洁,但功能强大,可以进行底层的内存操作和位运算。 C语言具有良好的可读性和可维护性,这使得它成为学习计算机科学的入门语言,并广泛应用于教育和研究领域。另外,C语言的编译器和开发工具比较成熟和稳定,有许多开源的实现和丰富的库函数,方便开发人员使用。 C语言的特点还包括: 1. 可移植性:由于C语言具有良好的可移植性,开发人员可以将代码在不同的平台上进行编译和运行,而不需要做太多的修改。 2. 速度高:C语言是一种面向机器的语言,可以直接访问硬件资源,因此执行效率非常高。 3. 面向过程:C语言是一种基于过程的编程语言,它的核心是函数,程序的执行流程由函数之间的调用和返回来控制。 4. 灵活性:C语言提供了丰富的库函数和工具,可以进行各种功能的开发和扩展。同时,C语言也支持底层的内存操作和指针运算,可以进行更加细致和高效的编程。 总的来说,C语言是一种功能强大、灵活性高、性能优越的编程语言,广泛应用于各个领域的软件开发和系统编程。它是学习计算机科学和编程的重要工具,也是很多编程语言的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值