- 小程序真机webview调用选择图片上传,选择图片后会跳转到首页,开发者工具则没有问题?
华为p40pro 微信80.010 // 选择头像 chooseImg() { let that = this; let url = window.location.href; // if (url.indexOf("/") !== -1) { // url = url.substring(0, url.lastIndexOf("/")); // } getSignature({ url: url }).then((res) => { if (res.success) { // 注册微信接口 that.registerWeChat(res.result); } }); }, // 注册微信接口 registerWeChat(data) { let that = this; wx.config({ // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 debug: false, // 必填,公众号的唯一标识 appId: process.env.VUE_APP_APP_ID, // 必填,生成签名的时间戳 timestamp: data.timestamp, // 必填,生成签名的随机串 nonceStr: data.nonceStr, // 必填,签名 signature: data.signature, // 必填,需要使用的JS接口列表,所有JS接口列表 jsApiList: [ "uploadImage", "downloadImage", "getLocalImgData", "chooseImage", ], }); wx.ready(function () { wx.chooseImage({ count: 1, // 默认9 sizeType: ["original", "compressed"], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ["album", "camera"], // 可以指定来源是相册还是相机,默认二者都有 success: function (res) { var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片 wx.getLocalImgData({ localId: localIds[0], // 图片的localID success: function (res) { var localData = res.localData; // localData是图片的base64数据,可以用img标签显示 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"); that.uploadHeader(localData); }, }); }, }); }); wx.error(function (res) { alert('错了') }); }, // base64转换为文件流 base64toFile(dataurl, filename = "file") { let arr = dataurl.split(","); let mime = arr[0].match(/:(.*?);/)[1]; let suffix = mime.split("/")[1]; let bstr = atob(arr[1]); let n = bstr.length; let u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } let datas = new File([u8arr], `${filename}.${suffix}`, { type: mime, }); return datas; }, // 上传头像 uploadHeader(fileData) { let that = this; let files = that.base64toFile(fileData, timestamp()); this.$nextTick(() => { let param = new FormData(); //创建form对象 param.append("file", files); //通过append向form对象添加数据 param.append("biz", 'temp'); //通过append向form对象添加数据 uploadFile(param).then((res) => { if (res.success) { that.updateUserInfo(res.message); } }); }); }, // 更改用户信息 updateUserInfo(urls) { let that = this; let params = { avatar: urls, id: that.userInfo.id, }; editUserInfo(params).then((res) => { if (res.success) { that.getUser(); } else { Toast.fail(res.message); } }); },
2021-08-19 - 微信webview调用微信上传图片接口和扫一扫接口直接跳转到首页,在开发者工具可以上传,怎么回事呢?
华为p40pro 微信8.0.9 // 选择头像 chooseImg() { let that = this; let url = window.location.href; if (url.indexOf("/") !== -1) { url = url.substring(0, url.lastIndexOf("/")); } getSignature({ url: url }).then((res) => { if (res.success) { // 注册微信接口 that.registerWeChat(res.result); } }); }, // 注册微信接口 registerWeChat(data) { let that = this; wx.config({ // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 debug: false, // 必填,公众号的唯一标识 appId: process.env.VUE_APP_APP_ID, // 必填,生成签名的时间戳 timestamp: data.timestamp, // 必填,生成签名的随机串 nonceStr: data.nonceStr, // 必填,签名 signature: data.signature, // 必填,需要使用的JS接口列表,所有JS接口列表 jsApiList: [ "uploadImage", "downloadImage", "getLocalImgData", "chooseImage", ], }); wx.ready(function () { wx.chooseImage({ count: 1, // 默认9 sizeType: ["original", "compressed"], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ["album", "camera"], // 可以指定来源是相册还是相机,默认二者都有 success: function (res) { var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片 wx.getLocalImgData({ localId: localIds[0], // 图片的localID success: function (res) { var localData = res.localData; // localData是图片的base64数据,可以用img标签显示 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"); console.log("localData----1222", localData); that.uploadHeader(localData); }, }); }, }); }); }, // base64转换为文件流 base64toFile(dataurl, filename = "file") { let arr = dataurl.split(","); let mime = arr[0].match(/:(.*?);/)[1]; let suffix = mime.split("/")[1]; let bstr = atob(arr[1]); let n = bstr.length; let u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } let datas = new File([u8arr], `${filename}.${suffix}`, { type: mime, }); return datas; }, // 上传头像 uploadHeader(fileData) { let that = this; let files = that.base64toFile(fileData, timestamp()); this.$nextTick(() => { let param = new FormData(); //创建form对象 param.append("file", files); //通过append向form对象添加数据 param.append("biz", 'temp'); //通过append向form对象添加数据 uploadFile(param).then((res) => { if (res.success) { that.updateUserInfo(res.message); } }); }); }, // 更改用户信息 updateUserInfo(urls) { let that = this; let params = { avatar: urls, id: that.userInfo.id, }; editUserInfo(params).then((res) => { if (res.success) { that.getUser(); } else { Toast.fail(res.message); } }); },
2021-08-18 - 程序 webview 调用扫一扫需要appid和AppSecrt去生成签名才能调用码?
小程序 webview 调用扫一扫 必须要用 小程序的appid和AppSecrt跟公众号一样去生成签名才能调用扫一扫功能吗?
2021-08-18 - 微信小程序反复进入webView 会卡死 ,华为p40pro,有结局方案不?
微信小程序反复进入webView 会卡死 ,华为p40pro,有结局方案不
2021-08-13 - 微信公众号后台设置菜单跳转链接,pc端咋个现在直接跳转的外部浏览器而不是微信内置浏览器?
微信公众号后台设置菜单跳转链接,pc端咋个现在直接跳转的外部浏览器而不是微信内置浏览器?就是pc端微信升级后点击公众号菜单直接跳转外部浏览器,而不是内部浏览器
2021-04-21