iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >微信JS-SDK选择图片遇到的坑有哪些
  • 401
分享到

微信JS-SDK选择图片遇到的坑有哪些

2024-04-02 19:04:59 401人浏览 安东尼
摘要

这篇文章主要介绍了微信js-SDK选择图片遇到的坑有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。有个需求要在微信企业号里面做开发,有个

这篇文章主要介绍了微信js-SDK选择图片遇到的坑有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

有个需求要在微信企业号里面做开发,有个功能是选择图片,使用input标签肯定是不管用了,Android手机上不能多选,所以使用了微信的JS-SDK提供的相关api,这个地方真的是有坑。按照文档直接引入js文件即可,如果使用的是Vue,也可以使用weixin-js-sdk,两种方式都可以。

图片在Android上无法预览

js-sdk的chooseImage 接口返回的结果是localId,类似于wxLocalResource://xxxxxx,如果想得到它的base64串需要再调用getLocalImgData方法,因为我们后台接口里需要用到这个base64串,所以通过这个接口来获取base64串作展示,而不是用文档里介绍的方法。那这里有个坑,从Android获取的localData是不带有base64前缀的,要处理一下。

selectImage: function () {
  let context = this;
  wx.chooseImage({
    count: 9,
    sizeType: ['compressed'], 
    sourceType: ['album', 'camera'], 
    defaultCameraMode: "nORMal", 
    success: function (res) {
      // localIds是在data里定义的一个localId数组
      context.localIds = res.localIds;
      // 不能直接遍历这个数组
      context.updateBase64Data(context.localIds.shift());
    },
    fail: function (res) {
      alert('选择图片失败:' + res.errMsg);
    },
  });
},
updateBase64Data: function (localId) {
  let context = this;
  wx.getLocalImgData({
    localId: localId, // 图片的localID
    success: function (res) {
      let localData = res.localData;
      let prefix = 'base64,';
      let index = localData.indexOf(prefix);
      let actData = localData;
      // 我现在是设置参数,如果是展示的话则应该是添加头部data:image/jpeg;base64,
      if (index > -1) {
        actData = localData.substring(index + 7);
      }
      // base64Array是在data里定义的一个base64串数组
      context.base64Array.push(actData);
      
      if (context.localIds.length > 0) {
        context.updateBase64Data(context.loaclIds.shift());
      } else {
        // 执行处理
      }
    },
    fail: function (res) {
      alert('选择图片失败:' + res.errMsg);
    },
  });
},

getLocalImgData获取多张图片无响应

chooseImage方法获取到是一个localId的数组,如果直接遍历这个数组去调用getLocalImgData时它只会执行一次,后面的无论怎样都不会执行,猜测应该是跟它localId的获取有关系。所以采取了上面代码中递归的方式调用,当连续调用uploadImage上传图片时也要这么做。

Android无法选择原图

尽管在chooseImage方法可以通过sourceType字段指定是原图还是压缩后的图,但是只要调用了getLocalImgData方法,那获取到的base64串展示一定是模糊的。你在想是不是Android上面不能使用原图啊,错了,仔细看iOS上面的图也是不清楚的,测试发现确实是这样,原图1.8M,使用js-sdk选择的原图只有不到240K,那为什么Android会模糊但是IOS比较清楚呢,你是不是又想这不是IOS和Android系统的区别吧,把同一张图片通过getLocalImgData方法获取到的base64串做比对发现,Android上得到的base64串前缀是以GCM开头,而IOS则是以/9j/开头,从PC上选择的图也是以/9j/开头,自己解析的图片也是以/9j/开头,所以不是因为压缩变模糊了,是因为使用了不一样的编码变模糊了。如果真的想选择原图,先把图片上传到微信服务器,然后使用获取临时素材的接口https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID,把图片下载下来,经测试这样其实也是有压缩的,这个是企业号的API如果用公众号地址是Https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID。代码就不贴了,与上面的基本一致。

感谢你能够认真阅读完这篇文章,希望小编分享的“微信JS-SDK选择图片遇到的坑有哪些”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网VUE频道,更多相关知识等着你来学习!

--结束END--

本文标题: 微信JS-SDK选择图片遇到的坑有哪些

本文链接: https://www.lsjlt.com/news/79433.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信JS-SDK选择图片遇到的坑有哪些
    这篇文章主要介绍了微信JS-SDK选择图片遇到的坑有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。有个需求要在微信企业号里面做开发,有个...
    99+
    2024-04-02
  • 微信小程序开发时遇到的坑有哪些
    这篇文章主要讲解了“微信小程序开发时遇到的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序开发时遇到的坑有哪些”吧!最近参与开发了公司的第一款小程序,开发体验基本类似于基于w...
    99+
    2023-06-13
  • BigDecimal遇到的坑有哪些
    这篇文章主要介绍“BigDecimal遇到的坑有哪些”,在日常操作中,相信很多人在BigDecimal遇到的坑有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”BigDec...
    99+
    2024-04-02
  • 微信JS SDK接入的注意事项有哪些
    这篇文章主要介绍微信JS SDK接入的注意事项有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!微信JS SDK接入,主要可以先参考官网说明文档,总结起来有几个步骤:1.绑定域名:...
    99+
    2024-04-02
  • vue+js实现微信上传图片选择功能
    本文实例为大家分享了vue+js实现微信上传图片选择的具体代码,供大家参考,具体内容如下 需求:实现微信发送图片或发朋友圈选择图片功能 可实现选后点击后 选择图片标记值自减或自增 最...
    99+
    2024-04-02
  • Android Studio升级到3.0后遇到的坑有哪些
    这篇文章主要介绍Android Studio升级到3.0后遇到的坑有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!第一坑、必须升级gradle到4.0以上相信这个大坑,一般使用as的人都会解决了,所以就不多说第二...
    99+
    2023-05-30
    android studio
  • 使用recvfrom函数遇到的坑有哪些
    使用recvfrom函数时可能会遇到以下几个常见的问题:1. 阻塞问题:recvfrom函数默认是阻塞的,即当没有收到数据时,程序会...
    99+
    2023-08-24
    recvfrom
  • vue resource post请求时遇到的坑有哪些
    这篇文章将为大家详细讲解有关vue resource post请求时遇到的坑有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用 post 请求// glo...
    99+
    2024-04-02
  • 使用try-catch-finally常遇到的坑有哪些
    本篇内容主要讲解“使用try-catch-finally常遇到的坑有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“使用try-catch-finally常遇到的坑有哪些”吧!坑1:final...
    99+
    2023-06-15
  • mysql中timestamp比较查询遇到的坑有哪些
    这篇文章主要介绍mysql中timestamp比较查询遇到的坑有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!timestamp比较查询遇到的坑要求mysql建表的时候update_time 为timestamp...
    99+
    2023-06-21
  • vue做移动端微信公众号遇到的问题有哪些
    小编给大家分享一下vue做移动端微信公众号遇到的问题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!第一坑:微信分享导致安卓...
    99+
    2024-04-02
  • 微信小程序中遇到的iOS兼容性问题有哪些
    这篇文章主要介绍了微信小程序中遇到的iOS兼容性问题有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.iOS中input的placeh...
    99+
    2024-04-02
  • 微信小程序开发过程中遇到问题有哪些
    小编给大家分享一下微信小程序开发过程中遇到问题有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!微信小程序 开发过程中遇到问题总结第一次正式开发一个小程序,就从以下几个方面来谈一谈小程序...
    99+
    2024-04-02
  • Python分布式进程中会遇到的坑都有哪些呢
    Python分布式进程中会遇到的坑都有哪些呢,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。小惊大怪你是不是在用Python3或者在windows系统上编程最重要的是你对进程和线...
    99+
    2023-06-16
  • 微信小程序picker选择器获取值的方法有哪些
    这篇文章主要介绍了微信小程序picker选择器获取值的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序picker选择器获取值的方法有哪些文章都会有所收获,下面我们一起来看看吧。想要实现的效果...
    99+
    2023-07-05
  • 微信小程序中如何实现图片选择、上传到服务器、预览功能
    这篇文章主要介绍了微信小程序中如何实现图片选择、上传到服务器、预览功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。小程序实现选择图片、预览...
    99+
    2024-04-02
  • Linux实践中使用重定向和管道符遇到的坑有哪些
    这篇文章给大家介绍Linux实践中使用重定向和管道符遇到的坑有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。我很喜欢 Linux 系统,尤其是 Linux  的一些设计很漂亮,比如可以将一些复杂的问题分解...
    99+
    2023-06-15
  • 微信小程序视图层的知识点有哪些
    这篇文章主要介绍“微信小程序视图层的知识点有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序视图层的知识点有哪些”文章能帮助大家解决问题。小程序框架的视图层由WXML(WeiXin Ma...
    99+
    2023-06-30
  • 微信小程序选择本地图片、视频的最新方法chooseMedia,转为为base64上传到后端接口
    微信小程序选择本地图片上传 微信的api变动还是挺大的,之前选择图片的apiwx.chooseImage已被弃用,改为了wx.chooseMedia,本篇将介绍如何使用最新方法wx.chooseMedia进行选择图片上传并回显,以及转为为b...
    99+
    2023-08-18
    微信小程序 音视频 小程序
  • 微信小程序js接受页面传值的方法有哪些
    这篇文章主要讲解了“微信小程序js接受页面传值的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序js接受页面传值的方法有哪些”吧! 1.本页面参数名为局部变量:onLoad...
    99+
    2023-06-26
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作