收藏
回答

小程序chooseImage返回的图片数组不是按点选顺序?

多图上传,在相册按照顺序选择后并不按照顺序显示

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

3 个回答

  • 刘帅
    刘帅
    2020-03-11

    <view class="weui-grids">
        <block wx:for="{{files}}" wx:key="*this">
          <view class="weui-grid">
            <image class="weui-grid__icon" src="{{item}}" mode="aspectFill" />
            <image class="delpic" src="/images/del.png" data-num="{{index}}" bindtap="delpic"></image>
          </view>
        </block>
      </view>
    data: {
        count9,
        images: [],
        images_url: [],
        
        files: [],
        
      },
    //上传图片
     
     chooseImgfunction (e{
        var that = this;
        if (that.data.count > 0) {
          wx.chooseImage({
            count: that.data.count,
            sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
            sourceType: ['album''camera'], // 可以指定来源是相册还是相机,默认二者都有
            successfunction (res{
              // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
              var files = that.data.files.concat(res.tempFilePaths)
              that.setData({
                files: that.data.files.concat(res.tempFilePaths),
                images: [],
                images_url: []
              });
              that.uploadImage(files, 0)
              wx.showToast({
                title'正在上传...',
                icon'loading',
                masktrue,
                duration10000
              })
            }
          })
        } else {
          wx.showToast({
            title'最多上传9张图片',
            icon'none',
            masktrue,
            duration2000
          })
        }
        
      },
    uploadImagefunction (files, i{
        var i
        var that = this
        wx.uploadFile({
          url: app.globalData.apiUrl + 'upload',
          filePath: files[i],
          name'img',
          success(res) {
            var images_url = that.data.images_url
            var images = that.data.images
            var picdata = JSON.parse(res.data);
            images_url.push(picdata.data.img_url);
            images.push(picdata.data.img);
            var count = images_url.length;
            that.setData({
              count9 - count,
              images: images,
              images_url: images_url
            });
            i++
            if (i < files.length) {
              that.uploadImage(files, i)
            } else {
              wx.hideToast();
            }
          },
          failfunction (res{
            wx.hideToast();
            wx.showModal({
              title'错误提示',
              content'上传图片失败',
              showCancelfalse,
              successfunction (res{}
            })
          }
        })
      },
    


    2020-03-11
    有用 2
    回复
  • 7克
    7克
    2020-03-20

    异步处理,肯定不会按照顺序(欢迎私信交流),多图上传参考例子:https://blog.songdonghong.com/2020/03/18/wxxcxplsc/

    2020-03-20
    有用
    回复
  • Code Weaver
    Code Weaver
    2020-03-10

    写个代码片段 把这几张图放进去看下。

    2020-03-10
    有用
    回复 13
    • 刘帅
      刘帅
      2020-03-10
      https://developers.weixin.qq.com/s/bltcsKmI7rfu
      2020-03-10
      回复
    • 刘帅
      刘帅
      2020-03-10
      你随便找几张图上传试一下
      2020-03-10
      回复
    • Code Weaver
      Code Weaver
      2020-03-10回复刘帅
      好的。下班了 明早看下。
      2020-03-10
      回复
    • Code Weaver
      Code Weaver
      2020-03-11回复刘帅
      试了下确实是,自己实现的上传是谁先返回值谁先push进数组的吧?如果某张图片质量比较小是不是最先push进去。
      2020-03-11
      回复
    • 刘帅
      刘帅
      2020-03-11回复Code Weaver
      已经简单而又的粗暴的解决了
      2020-03-11
      回复
    查看更多(8)
登录 后发表内容
问题标签