收藏
回答

wx.uploadFile上传多张图片

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

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


- 希望提供的能力

wx.uploadFile上传多张图片

回答关注问题邀请回答
收藏

6 个回答

  • Leon
    Leon
    2020-01-09
    一年多过去了,现在还是没有支持一次性上传多张,写循环一张一张传吧,
    
    
    Page({
     
      data: {
      },
     
      //选择并上传图片--Max:9张
      selectImage: function () {
        wx.chooseImage({
          count: 9,
          sizeType: ['original', 'compressed'],
          sourceType: ['album', 'camera'],
     
          success: function (res) {
            //将图片路径循环赋值给filePath参数
            for (var i = 0; i < res.tempFilePaths.length; i++) {
     
              var imgUrl = res.tempFilePaths[i];
     
              wx.uploadFile({
                //上传图片的网路请求地址
                url: 'http://localhost:8080//upload/uploadPic',
                //选择
                filePath: imgUrl,
                name: 'file',
     
                success: function (res) {
                  console.log("success");
                },
     
                fail: function (res) {
                  console.log("error");
                }
              });
     
            }//for循环结束
     
          }
        });
     
        console.log("****正在添加图片*****");
     
      },
     
     
    })
    
    2020-01-09
    有用 1
    回复
  • 存|ω・)
    存|ω・)
    2018-11-17

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

    2018-11-17
    有用 1
    回复 8
    • 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
      1
      回复
    • 存|ω・)
      存|ω・)
      2018-11-17回复

      好的,谢谢小姐姐!

      2018-11-17
      回复
    • 存|ω・)
      存|ω・)
      2018-11-17回复

      我又找到一个办法!

      使用  av-weapp.js

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


      2018-11-17
      回复
    查看更多(3)
  • Mamba
    Mamba
    2018-12-27

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

    2018-12-27
    有用
    回复
  • JRONG
    JRONG
    2018-11-21

    那失败的怎么重新上传呢

    2018-11-21
    有用
    回复
  • just so so😂
    just so so😂
    2018-11-09

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


    2018-11-09
    有用
    回复 1
    • 新华
      新华
      2019-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;

                  }

              }



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

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

    2018-11-07
    有用
    回复 1
    • just so so😂
      just so so😂
      2018-11-09

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

      2018-11-09
      回复
登录 后发表内容