wx.chooseMessageFile在pc端微信小程序失效解决方法

2024-09-06 20:52

本文主要是介绍wx.chooseMessageFile在pc端微信小程序失效解决方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目场景:

在uniapp上驱动微信开发者工具(下图)

在手机上和微信开发者工具中(图1)都可以上传成功,

打开pc端的微信小程序

在pc端打开小程序时点击上传没反应


问题描述

提示:这里描述项目中遇到的问题:

在pc端打开小程序上传的时候发现点击上传没有反应,通过(    console.log("打印====111")    )打印步骤发现wx.chooseMessageFile方法失效

下面是代码

封装上传代码

//微信 上传文件方法  需要传入3个参数 
//count是上传文件的数量 
//extension 参数是用来指定文件类型的过滤条件,
//formData是上传文件的数据
export function wx_chooseMessageFile(type, count, extension, formData) {return new Promise((resolve, reject) => {wx.chooseMessageFile({type: type,count: count,extension: extension,//   ['.zip', '.docx', '.doc', '.pdf', 'txt', '.csv', //   '.xlsx', '.ppt', '.pptx']success: function(res) {console.log("选择的文件是", res);let temp_path = res.tempFiles[0].pathlet name = res.tempFiles[0].nameuni.uploadFile({url: process.env.VUE_APP_BASE_URL + "/file/add_file",filePath: temp_path,name: "file",header: {'system-type': 3,'Authorization': uni.getStorageSync('token') ?"Bearer " + uni.getStorageSync('token') : ''},    formData: formData,success(uploadFileRes) {console.log("打印uploadFileRes", uploadFileRes);if (uploadFileRes.statusCode == 200) {let data_ = JSON.parse(uploadFileRes.data)// 将请求成功的结果返回resolve(data_)} else {uni.showToast({title: uploadFileRes.data.msg,icon: 'none'})}},fail: (err) => {reject(err);}})}})})
}

下载与预览代码

wx.chooseMessageFile({...success(res) {const filePath = res.tempFiles[0].path; // 获取上传成功后的文件路径const downloadUrl = 'https://example.com/file.mp4'; // 下载链接const previewUrl = 'https://example.com/image.jpg'; // 预览链接// 下载文件wx.downloadFile({url: downloadUrl,success(res) {const filePath = res.tempFilePath; // 下载成功后的文件路径// 在页面中展示下载链接const downloadLink = document.createElement('a');downloadLink.href = filePath;downloadLink.innerText = '下载文件';document.body.appendChild(downloadLink);}});// 预览文件wx.previewFile({url: previewUrl,success(res) {// 在页面中展示预览链接const previewLink = document.createElement('a');previewLink.href = previewUrl;previewLink.innerText = '预览文件';document.body.appendChild(previewLink);}});}
})

原因分析:

提示:这里填写问题的分析:

wx.chooseMessageFile只支持移动端的使用,并不支持pc端,所以在pc端打开微信小程序的时候方法wx.chooseMessageFile会失效


解决方案:

提示:这里填写该问题的具体解决方案:

1:下载第三方库

在wx.chooseMessageFile方法失效的时候有想过用原生的<input type="file"/>后来发现也不行,查后发现是因为uniapp不支持原生,所以只能求助第三方库,发现vant可以,而且vant有专门针对微信小程序开发的库 就是  Vant Weapp 然后  下载这个组件库  下载后将其解压,如下图

2:引入第三方库

在自己的uniapp项目文件中,新建一个文件夹,这个文件夹与pages文件平级(我新建的叫wxcomponents)然后再在里面新建一个文件(我新建的叫vant-weapp)然后将解压后的dist文件放到里面,如下图

3:在pages.json页面中做配置

有两个地方要做配置,但是都是在pages.json页面,如下图:

1:在与pages对象数组平级的地方新加代码

"easycom": {"van-(.*)": "@/wxcomponents/vant-weapp/dist/$1/index"},

2:在globalStyle中全局配置引用

"globalStyle": {"navigationBarTextStyle": "black","navigationBarTitleText": "加载中","navigationBarBackgroundColor": "#fff","backgroundColor": "#F8F8F8","titleNView": false,"usingComponents": {//这里为方便,全局引入了所有组件,也可以在某个page下单独引用某个组件"van-button": "/wxcomponents/vant-weapp/dist/button/index","van-uploader": "/wxcomponents/vant-weapp/dist/uploader/index"}},

3:在页面中引入使用

在页面中引入组件,然后注册组件,这样才能使用

1:引入
import vanUploader from '@/wxcomponents/vant-weapp/dist/uploader/index.js';
2:在components里面注册
components: {vanUploader},
3:html中使用
<vanUploader :fileList="file_list" bind:after-read="afterRead" />
4:上传方法:
afterRead(event) {const { file } = event.detail;// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式wx.uploadFile({url: 'https://example.weixin.qq.com/upload', // 仅为示例,非真实的接口地址filePath: file.url,name: 'file',formData: { user: 'test' },success(res) {// 上传完成需要更新 fileListconst { fileList = [] } = this.data;fileList.push({ ...file, url: res.data });this.setData({ fileList });},});
},
5:查看结果

注:

vant-weapp的上传可以解决uniapp运行打包发布的微信小程序中的wx.chooseMessageFile失效的问题。但是对van-uploader 封装上传的话自己封装,这里只做vant-weapp的下载引入与使用。

这篇关于wx.chooseMessageFile在pc端微信小程序失效解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

webm怎么转换成mp4?这几种方法超多人在用!

webm怎么转换成mp4?WebM作为一种新兴的视频编码格式,近年来逐渐进入大众视野,其背后承载着诸多优势,但同时也伴随着不容忽视的局限性,首要挑战在于其兼容性边界,尽管WebM已广泛适应于众多网站与软件平台,但在特定应用环境或老旧设备上,其兼容难题依旧凸显,为用户体验带来不便,再者,WebM格式的非普适性也体现在编辑流程上,由于它并非行业内的通用标准,编辑过程中可能会遭遇格式不兼容的障碍,导致操

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打