微信小程序 webview 中的h5 页面 van-uploader 部分机型无法上传 解决方案

本文主要是介绍微信小程序 webview 中的h5 页面 van-uploader 部分机型无法上传 解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 20220704更

jssdk chooseImage安卓手机无法唤起相机或相册?微信版本8.0.24 | 微信开放社区

调用chooseImage无法唤起相机或相册。经过多方测试,发现只有安卓微信8.0.24是这样。
 

微信官网解决方案:

请使用wx.chooseMedia(Object object)   wx.chooseMedia(Object object) | 微信开放文档

8.0.23版本更新后

小程序webview组件内嵌h5的时候上传文件调用出问题? | 微信开放社区1.小程序webview组件使用vant ui上传方法是多文件上传图片时出现直接跳转到图片选择界面,没有跳转到文件选择界面2.因为直接跳转图片选择界面导致小程序多图片上传在部分安卓机上出现bug,文件上传无法再次调用的情况3.同样的操作同样的方法在微信内置浏览器打开链接时会弹出拍照和从相册选择的弹窗。4.请问小程序的webview组件方法是否在监听到了多图图片上传时直接执行了跳转方法,没有唤起弹窗,与小程序内核浏览器方法存在差异5.下图是微信内核浏览器调用多图上传时弹出的弹窗,但是在小程序的webview组件中没有弹出,并且直接跳转图片文件选择界面,导致部分安卓机型出现无法上传图片的情况https://developers.weixin.qq.com/community/develop/doc/0004e8f0368cf09c6bfd21f3556000

微信更新8.0.22版本后,在微信小程序 webview 中的h5 页面 van-uploader 部分机型无法正常上传,在非小程序打开无此类问题。

解决方案:

1、去除  multiple  可单张上传    缺点:不可多选
2、用jssdk的wx.chooseImage (注:企业微信不支持)缺点:h5页面要在微信打开,浏览器无法上传

wxConfig(result) {let _this = this;let timestamp = result.timestamp;let noncestr = result.nonceStr;let signature = result.signature;let appId = result.appId;wx.config({debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。//                                debug : true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId: appId, // 必填,公众号的唯一标识timestamp: timestamp, // 必填,生成签名的时间戳nonceStr: noncestr, // 必填,生成签名的随机串signature: signature, // 必填,签名,见附录1jsApiList: ["chooseImage","getLocalImgData",] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2});wx.ready(function () {setSessionStorage('wxready', true);console.log("微信已加载完毕!");});wx.error(function (res) {});
}

使用修改代码量最少的方法

<van-uploader v-model="picture.other" @delete="deleteImg" :show-upload="false"accept="image/*">
</van-uploader>
<span class="imgUpload" @click="chooseImage">+</span>chooseImage(index, type) {let _this = this;wx.chooseImage({count: 9, // 默认9sizeType: ['original',], // 可以指定是原图还是压缩图,默认二者都有sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有success: function (res) {let localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片_this.wxImgData(localIds, type)}});},wxImgData(item, type) {let localId = item.pop();let _this = this;let params = new FormData();wx.getLocalImgData({localId: localId, // 图片的localIDsuccess: function (res) {let 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'); // 此处的localData 就是你所需要的base64位let file = _this.dataURLtoFile(localData);params.append("request", file);//接口上传upLoad(params).then(response => {if (response.code == '0') {Dialog.alert({title: '提示',message: response.message || '上传失败,请重新上传'});} else {if (item.length > 0) {//多张重复上传_this.wxImgData(item, type)} else {}}})}})},dataURLtoFile(dataurl, filename = 'weixin.jpg') {var arr = dataurl.split(','),//mime = arr[0].match(/:(.*?);/)[1],mime = "image/jpeg",bstr = atob(arr[1]),n = bstr.length,u8arr = new Uint8Array(n);while (n--) {u8arr[n] = bstr.charCodeAt(n);}return new File([u8arr], filename, {type: mime});},.imgUpload {font-size: 20px;position: relative;display: -webkit-box;display: -webkit-flex;display: flex;-webkit-box-orient: vertical;-webkit-box-direction: normal;-webkit-flex-direction: column;flex-direction: column;-webkit-box-align: center;-webkit-align-items: center;align-items: center;-webkit-box-pack: center;-webkit-justify-content: center;justify-content: center;box-sizing: border-box;width: 2.133333rem;height: 2.133333rem;margin: 0 .213333rem .213333rem 0;background-color: #f7f8fa;
}



        

这篇关于微信小程序 webview 中的h5 页面 van-uploader 部分机型无法上传 解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/815874

相关文章

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF