收藏
回答

wx.uploadFile上传多张图片

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 需求 uploadFile 客户端 1.0.3 2.0.0

- 需求的场景描述(希望解决的问题)


- 希望提供的能力

wx.uploadFile上传多张图片

最后一次编辑于  2018-11-07  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

5 个回答

  • Brave
    Brave
    2018-12-27

    为啥不支持多张一起上传呢

    2018-12-27
    赞同
    回复
  • JRONG
    JRONG
    2018-11-21

    那失败的怎么重新上传呢

    2018-11-21
    赞同
    回复
  • ゑ.柳橙.£
    ゑ.柳橙.£
    2018-11-17

    兄弟,问题解决了没有??

    2018-11-17
    赞同
    回复 6
    • 夏天的鱼呀
      夏天的鱼呀
      2018-11-17

      叫小姐姐,没得办法,只能一张张上传,写的循环调用上传方法

      2018-11-17
      回复
    • ゑ.柳橙.£
      ゑ.柳橙.£
      2018-11-17回复夏天的鱼呀

      小姐姐!小姐姐

      2018-11-17
      回复
    • 夏天的鱼呀
      夏天的鱼呀
      2018-11-17

      上传图片的时候,让后台小伙伴返回了一个id--comment_id,最后页面提交的时候传的这个id过去

      chooseImage: function (e) {

          let  that = this;

          wx.chooseImage({

            count: 9,

            sizeType: ['original', 'compressed'],

            sourceType: ['album', 'camera'],

            success: function (res) {

              var successUp = 0; //成功

              var failUp = 0; //失败

              var length = res.tempFilePaths.length; //总数

              var count = 0; //第几张

              that.uploadOneByOne(res.tempFilePaths, successUp, failUp, count, length);


            }

          })

        },

      /**

        * 采用递归的方式上传

        */

       uploadOneByOne(imgPaths,successUp, failUp, count, length){

         let that = this;

         wx.showLoading({

            title: '正在上传',

          })

         let _timestamp = timestamp();

         wx.uploadFile({

           url: 'url', 

           filePath: imgPaths[count],

           id: that.data.order_id,

           goods_id: that.data.goods_id,

           key:that.data.key,

           name: 'file',//示例,使用顺序给文件命名

           success:function(e){

             successUp++;//成功+1

           },

           fail:function(e){

             failUp++;//失败+1

           },

           complete:function(e){

             count++;//下一张

             if(count == length){

               //上传完毕,作一下提示

               if (e.statusCode==200){

                 that.setData({

                   comment_id: JSON.parse(e.data).data.id

                 })

               }

               that.setData({

                 files: that.data.files.concat(imgPaths)

               });

               

               wx.showToast({

                 title: '上传成功' + successUp,

                 icon: 'success',

                 duration: 2000

               })

               console.log(that.data.comment_id);

             }else{

               //递归调用,上传下一张

               that.uploadOneByOne(imgPaths, successUp, failUp, count, length);

             }

           }

         })

       },


      2018-11-17
      回复
    • ゑ.柳橙.£
      ゑ.柳橙.£
      2018-11-17回复夏天的鱼呀

      好的,谢谢小姐姐!

      2018-11-17
      回复
    • ゑ.柳橙.£
      ゑ.柳橙.£
      2018-11-17回复夏天的鱼呀

      我又找到一个办法!

      使用  av-weapp.js

      把图片路径转为 可打开的路径,然后用普通的  wx.request  提交就可以了


      2018-11-17
      回复
    查看更多(1)
  • just so so😂
    just so so😂
    2018-11-09

    filePath不支持数组对象,我们的接口只能调一次接口上传全部图片 不然就是重复下单,有没有好的解决办法?


    2018-11-09
    赞同
    回复 1
    • 新华
      新华
      01-03

      1、前端

      base64  》》 wx.request 传递json数据 listImgs

      2、后台 转换一下

              // 图片文件处理

              MultipartFile[] imgs = null;

              if (listImgs != null && listImgs.size() != 0) {

              int size = listImgs.size();

             

              BASE64DecodedMultipartFile base64DecodedMultipartFile = null;

                  imgs = new MultipartFile[size];

                  

                  for (int i = 0; i < size; i++) {

                  base64DecodedMultipartFile = (BASE64DecodedMultipartFile) FileHelper.base64ToMultipart(listImgs.get(i));

                  if (base64DecodedMultipartFile == null) {

                  // TODO

                  }

                 

                  imgs[i] = base64DecodedMultipartFile;

                  }

              }



      01-03
      回复
  • 拾忆
    拾忆
    2018-11-07

    多张上传每次也是一张一张传,写个循环就行了~

    2018-11-07
    赞同
    回复 1
    • just so so😂
      just so so😂
      2018-11-09

      filePath不支持数组对象,我们的接口只能调一次接口上传全部图片 不然就是重复下单,有没有好的解决办法?大兄弟

      2018-11-09
      回复