我的编程空间,编程开发者的网络收藏夹
学习永远不晚

H5项目中使用微信JS-SDK(以H5项目批量上传图片为例,兼容IOS及安卓)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

H5项目中使用微信JS-SDK(以H5项目批量上传图片为例,兼容IOS及安卓)

H5项目中使用微信图片上传相关sdk,主要用于解决 1.安卓手机无法一次选择多张图片进行上传问题;2.控制IOS系统手机一次可无限量选择图片上传的问题

一、准备工作:公众号配置

  1. 验证所需使用的sdk是否符合需求

可在使用场景中,打开微信官方提供的 微信SDKDemo 链接,或企业微信官方提供的 企业微信SDKDemo 链接。选择相应的接口demo,若符合需求,可进行后续开发,若不符合则需寻找其他方法。

2.配置微信公众号

微信公众平台 需管理员或长期运营者扫码登录,长期运营者,可在人员设置中进行配置

(1)添加js接口安全域名

在公众号设置中配置js接口安全域名,在设置弹窗中添加项目域名,并下载弹窗中超链接的文件,将文件放在前端项目服务器中,放在项目所在的文件夹。注意,JS接口安全域名只能添加5个域名且每月只能编辑5次,操作需要谨慎。

(2)配置IP白名单

开发者密码(AppSecret) 这个数据后台需要用到,若不知道开发者密码,可进行重置后获取。

IP白名单弹窗中添加项目ip地址,若不清楚项目IP可参考 jxjtyedu 公众号的白名单,该公众号配置的IP白名单基本涉及公司所有项目IP。IP白名单数量不限,修改次数不限,但IP不可重复。

二、前端开发

1.安装插件并配置sdk文件

(1)安装 微信SDK插件

npm install weixin-js-sdk

(2)封装wxSdk文件

在utils 文件夹中添加 weChatSdk.ts文件

import wx from'weixin-js-sdk'import axios from "axios";import { globalurl } from "./global";const env = import.meta.env;let action = ''switch (env.MODE) {  case "development":    action = globalurl.development;  break;  case "test":  action = globalurl.test;  break;  case "production":  action = globalurl.production;  break;}const wxconfig = async () =>{const url = encodeURIComponent(window.location.href.split('#')[0]);axios.get(`${action}print/printCommon/getJsapiInit?url=${url}`).then((result) =>{ // 接口获取配置参数  const {data} = result.datawx.config({    debug: true,// 开启调试模式,调用的所有api的返回值会在客户alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印appId: data.appId,timestamp: data.timeStamp,nonceStr: data.nonceStr,signature: data.signature,jsApiList:[ // 必填,需要使用的JS接口列表"chooseImage","getNetworkType","uploadImage","downloadImage","getLocalImgData"    ]  })})}export default wxconfig;

微信所有js接口列表 地址

(3) 注入权限验证配置

若项目为hash模式,则只需在app.vue文件引入weChatSdk.ts 中wxconfig方法,并在mounted时调用即可在项目任意页面使用微信js接口

若项目为history模式,则推荐在所需使用微信js接口的页面引入wxconfig方法并调用

2.批量上传图片(以下代码暂未测试,请勿使用,近期内会进行测试,测试完成后会再次编辑)

// 选择图片 拍照或从手机相册中选图接口const chooseImg = (index, type) => {wx.ready(() => {wx.chooseImage({count: 9,// 每次可选图片数量 默认9sizeType: ['original",],// 可以指定是原图还是压缩图,默认二者都有sourceType: ['album,camera'],// 可以指定来源是相册还是相机,默认二者都有success: function (res) {let locaIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img的class="lazy" data-src属性显示图片,但IOS WKWebview 不支持 localId 直接显示图片// 获取本地图片 此接口仅在 IOS WKWebview 下提供,用于兼容 IOS wKWebview 不支持 localId 直接显示图片的问题localIds.map(item => {getLocalImg(item)      })    }  })})}// 获取本地图片const getLocalImg = (localId) => {wx.ready(() => {wx.getLocalImgData({localId: localId,// 图片的localIDsuccess: function (res) [let localData = res.localData; // localData是图片的base64数据,可以用 img 标签显示// 部分浏览器获取的返回值不是标准的base64格式,判断获取到的图片数据是否有base64头部if (localData.indexOf('data:image') != 0) {// 判断是否有这样的头部localData = 'data:image/jpeg;base64,' + localData      }localData = localData.replace(/\r/\n/g,).replace('data:image/jgp','data:image/jpeg')// 第一个替换的是换行符,第二个替换的是图片类型,因为在IOS机上测试时看到它的图片类型时jgp,为了兼容其他设备就把它转为jpeg// 将图片由base64转为binary后上传handleUpload(convertFile(localData))      }  })})}// base64 转binaryconst convertFile = base64 => {let fileArray = base64.split(','),  //过滤出文件类型  fileType = fileArray[0].match(/:(.*?);/)[1],  //atob 是对经过 base-64 编码的字符串进行解码  bstr = atob(fileArray[1]),  n = bstr.length,  //Uint8Array 数组类型表示一个 8 位无符号整型数组  u8arr = new Uint8Array(n)while (n--) {// 返回字符串n个字符的 Unicode 编码u8arr[n] = bstr.charCodeAt(n)}//return new Blob([u8arr],[ type: fileType 3)return new File([u8arr],'文件名',{ type: fileType })}// file 上传const handleUpload = async (file) => {// 上传至服务器代码}

来源地址:https://blog.csdn.net/qq_37815596/article/details/129195628

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

H5项目中使用微信JS-SDK(以H5项目批量上传图片为例,兼容IOS及安卓)

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

下载Word文档

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录