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

news2024/9/22 5:29:34

项目场景:

在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].path
				let name = res.tempFiles[0].name
				uni.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) {
		    // 上传完成需要更新 fileList
	        const { fileList = [] } = this.data;
			fileList.push({ ...file, url: res.data });
			this.setData({ fileList });
	    },
    });
},
5:查看结果

注:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2111375.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css实现卡片右上角的状态

1、成品展示 2、html部分 <div class"itemBox"><div class"status">{{ statusList[item.status] }}</div> </div> 3、css部分 .itemBox {position: relative;overflow: hidden; } .status {height: 25px;line-height: 25px;bac…

ISO26262 功能安全对设计的要求以及评判安全等级的主要参数

ISO 26262 标准规定了道路车辆功能安全的相关要求&#xff0c;不同 ASIL 等级对控制器在设计、安全机制、验证确认和文档记录等方面有不同要求。高 ASIL 等级的控制器需满足更高的硬件和软件设计标准&#xff0c;具备更强的故障检测、诊断、容错和恢复能力&#xff0c;进行更严…

电脑回收站被清空,怎么恢复丢失数据?

回收站&#xff0c;这个看似不太起眼的电脑功能&#xff0c;实际上在关键时刻能够为我们挽回重大损失&#xff0c;帮助我们重新获得至关重要的文件和数据。对于经常与电脑打交道的朋友们来说&#xff0c;当某个文件被不小心删除时&#xff0c;回收站往往成为我们文件找回和恢复…

Vue 项目hash和history模式打包部署与服务器配置

你好&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 在开发 Vue 项目时&#xff0c;Vue Router 提供了两种模式来创建单页面应用&#xff08;SPA&#xff09;的 URL&#xff1a;hash 模式和 history 模式。 简单说下两者的主要区别&#xff1a; hash 模式下的…

2024 年高教社杯全国大学生数学建模竞赛B题—生产过程中的决策问题(讲解+代码+成品论文助攻)

2024数学建模国赛选题建议团队助攻资料-CSDN博客https://blog.csdn.net/qq_41489047/article/details/141925859本次国赛white学长团队选择的是比较擅长的BC题&#xff0c;选题建议和助攻资料可参见上面这篇博文&#xff0c;本篇博文主要介绍B题—生产过程中的决策问题&#xf…

反转二叉树(递归非递归解决)

给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 方法一&#xff1a;递归解法 递归是处理树结构问题的常用方式&#xff0c;二叉树的问题通…

【RLHF】浅谈ChatGPT 等大模型中的RLHF算法

本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅!​个人主页:有梦想的程序星空​个人介绍:小编是人工智能领域硕士,全栈工程师,深耕Flask后端开发、数据挖掘、NLP、Android开发、自动化等领域,有较丰…

生成tekton dashboard

我们在之前的&#xff08;安装和构建ci&#xff09;实践中&#xff0c;用到都是tekton cli&#xff0c;查看ci执行情况都是通过logs&#xff0c;不是很友好。 tekton dashboard提供了很多的ui界面。这里我们来安装并使用。 1. 创建dashboard.yaml apiVersion: v1 kind: Names…

[Deepin] Deepin 安装 MEGA

下载debian包 wget https://mega.nz/linux/repo/Debian_12/amd64/megasync-Debian_12_amd64.deb注意&#xff0c;因文章过时等原因&#xff0c;请去官网下载最新包 https://mega.io/zh-hans/desktop#download 模拟安装 下载后执行命令 udo apt install --simulate ./megasy…

2023 CCPC(秦皇岛)现场(第二届环球杯.第 2 阶段:秦皇岛)部分题解

所有题目链接&#xff1a;Dashboard - The 2023 CCPC (Qinhuangdao) Onsite (The 2nd Universal Cup. Stage 9: Qinhuangdao) - Codeforces 中文题面&#xff1a; contest-37054-zh.pdf (codeforces.com) G. Path 链接&#xff1a; Problem - G - Codeforces 中文题面 测试…

【Hadoop|HDFS篇】NameNode和SecondaryNameNode

1. NN和2NN的工作机制 思考&#xff1a;NameNode中的元数据是存储在哪里的&#xff1f; 首先&#xff0c;我们做个假设&#xff0c;如果存储在NameNode节点的磁盘中&#xff0c;因为经常需要进行随机访 问&#xff0c;还有响应客户请求&#xff0c;必然是效率过低。因此&…

Java面试题——第五篇(Java基础)

1. main方法为什么是静态的&#xff0c;能不能改为非静态的 由于JVM在运行Java应用程序的时候&#xff0c;首先会调用main方法&#xff0c;调用时不实例化这个类的对象&#xff0c;而是通过类名直接调用因此需要限制为public static。 不能改为非静态&#xff0c;main方法必须声…

JavaWeb - Mybatis - 基础操作

删除Delete 接口方法&#xff1a; Mapper public interface EmpMapper { //Delete("delete from emp where id 17") //public void delete(); //以上delete操作的SQL语句中的id值写成固定的17&#xff0c;就表示只能删除id17的用户数据 //SQL语句中的id值不能写成…

美妆行业的画册电子版如何制作?

美妆行业的画册电子版制作&#xff0c;首先要确立画册的主题和内容。针对美妆行业特点&#xff0c;可以展示产品系列、护肤理念、品牌故事、用户评价等内容。同时&#xff0c;为了吸引目标受众&#xff0c;需要注重画面美观和时尚感&#xff0c;突出产品特点和品牌形象。 在选择…

如何快速理解网络编程

目录 前言 一、网络编程的概念 二、TCP/IP架构体系的各层作用 三、网络通信中常用的专业术语 四、IP地址的分类和划分 前言 在一个主机中&#xff0c;我们能进行进程间通信&#xff0c;但是随这时代发展&#xff0c;我们不可能只是在单独的一个主机中传输数据&#xff0c;&…

H3C SR-MPLS通过OSPF通告SID配置

首先在配置前理解几个基本概念 Prefix SID配置 统一分配和配置&#xff08;全局规划&#xff09;loopback和prefix sidPrefix SIDSRGB Base&#xff08;16000&#xff09;index Adj SID自动生成 对应SR节点间的互联链路SR节点本地标识&#xff0c;从设备本地Segment池中动态…

观趋势 谋发展 2024 SSHT上海智能家居展有哪些创新呈现?

引言&#xff1a;大数跨境发布的《2024全球智能家居市场洞察报告》显示&#xff0c;智能家居市场正迎来快速增长&#xff0c;预计从2024年的1215.9亿美元增长至2032年的6332.0亿美元&#xff0c;复合年增长率为22.9%。 近年来&#xff0c;随着物联网、AI等底层技术的飞速进步&…

I/O管理【上】

目录 一. I/O设备的概念与分类二. I/O控制器(考的频率不高&#xff0c;但还是要有印象)三. I/O控制方式&#xff08;重要考点&#xff09;3.1 程序直接控制方式3.2 中断驱动方式3.3 DMA方式3.4 通道控制方式 四. I/O软件层次结构4.1用户层软件4.2 设备独立性软件4.3 设备驱动程…

摩博会前瞻:OneOS智能超高安全性彩屏,百元级价格,高性能骑行新选择!

引言 中国国际摩托车博览会即将启动&#xff01;倒计时7天&#xff0c;OneOS与恒石智能联合打造的十几款智能彩屏仪表首次展出&#xff01;十几款彩屏仪表由国产HMI芯片Model系列驱动&#xff0c;OneOS实时操作系统&#xff0c;100%国产自主设计&#xff0c;实现百元级超高安全…

DP(Display Port)

DP&#xff08;Display Port&#xff09; 一、DP简介 DisplayPort是由美国视频电子协会&#xff08;VESA&#xff1a;Video Electronics Standards Association&#xff09;在2006年5月提出的一种新型数字显示接口规范&#xff0c;主要用于源端和设备端&#xff08;如电脑显示…