收藏
回答

微信公众号左下角放的h5并引入了weixin-js-sdk调用wx.chooseImage失败?

代码片段:

isIOS() {

      return /iPhone|iPad|iPod/.test(navigator.userAgent)

},

isAndroid() {

      return /Android/.test(navigator.userAgent)

},

wx.config({

          debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

          appId: res.data[0].appId, // 必填,公众号的唯一标识

          timestamp: res.data[0].timestamp, // 必填,生成签名的时间戳

          nonceStr: res.data[0].nonceStr, // 必填,生成签名的随机串

          signature: res.data[0].signature, // 必填,签名

          jsApiList: ["chooseImage", "scanQRCode"], // 必填,需要使用的JS接口列表

        });

        const that = this;

        wx.ready(function () {

          if (that.isIOS()) {

            wx.scanQRCode({

              needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,

              scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有

              success: function (res) {

                var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果

                console.log(result);

              }

            });

          } else if (that.isAndroid()) {

            // 对于 Android 设备,调用 wx.chooseImage 获取相册和相机权限

            wx.chooseImage({

              count: 1, // 默认9

              sizeType: ["original", "compressed"], // 可以指定是原图还是压缩图,默认二者都有

              sourceType: ["album", "camera"], // 是相机

              success: function (res) {

                const localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片

                wx.getLocalImgData({

                  // 获取本地图片

                  localId: localIds[0],

                  success: function (res) {

                    const localData = res.localData;

                    let checkImage = "";

                    if (localData.indexOf("base64") >= 0) {

                      // 我传给后台的参数是不需要data:image/png;base64,所以去掉了。大家可以根据具体的业务需求对该格式做变化。

                      checkImage = localData.split(",")[1];

                    } else {

                      checkImage = localData;

                    }

                    that.sfzInfodata(checkImage);

                  },

                });

              },

            });

          }

        });

        wx.error(function (res) { });


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

2 个回答

  • Mr.Zhao
    Mr.Zhao
    发表于移动端
    11-27
    失败报啥错啊
    11-27
    有用
    回复 3
    • ( ̄へ ̄)
      ( ̄へ ̄)
      11-27
      看不到具体报错信息,但是根据客户发过来的反馈视频点击扫码就卡住了,无法进行其他操作。
      11-27
      回复
    • ( ̄へ ̄)
      ( ̄へ ̄)
      11-27回复( ̄へ ̄)
      具体方法代码片段:
      wx.chooseImage({
                    count: 1, // 默认9
                    sizeType: ["original", "compressed"], // 可以指定是原图还是压缩图,默认二者都有
                    sourceType: ["album", "camera"], // 是相机
                    success: function (res) {
                      const localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
                      wx.getLocalImgData({
                        // 获取本地图片
                        localId: localIds[0],
                        success: function (res) {
                          const localData = res.localData;
                          let checkImage = "";
                          if (localData.indexOf("base64") >= 0) {
                            // 我传给后台的参数是不需要data:image/png;base64,所以去掉了。大家可以根据具体的业务需求对该格式做变化。
                            checkImage = localData.split(",")[1];
                          } else {
                            checkImage = localData;
                          }
                          that.sfzInfodata(checkImage);
                        },
                      });
                    },
                  });
      11-27
      回复
    • Mr.Zhao
      Mr.Zhao
      11-27回复( ̄へ ̄)
      这看不出来
      11-27
      回复
  • ( ̄へ ̄)
    ( ̄へ ̄)
    11-27

    在IOS情况我也是调用

    wx.chooseImage({

                  count: 1, // 默认9

                  sizeType: ["original", "compressed"], // 可以指定是原图还是压缩图,默认二者都有

                  sourceType: ["album", "camera"], // 是相机

                  success: function (res) {

                    const localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片

                    wx.getLocalImgData({

                      // 获取本地图片

                      localId: localIds[0],

                      success: function (res) {

                        const localData = res.localData;

                        let checkImage = "";

                        if (localData.indexOf("base64") >= 0) {

                          // 我传给后台的参数是不需要data:image/png;base64,所以去掉了。大家可以根据具体的业务需求对该格式做变化。

                          checkImage = localData.split(",")[1];

                        } else {

                          checkImage = localData;

                        }

                        that.sfzInfodata(checkImage);

                      },

                    });

                  },

                });


    11-27
    有用
    回复
登录 后发表内容