uniapp 打开文件管理器上传(H5、微信小程序、android app三端)文件

H5跟安卓APP 手机打开的效果图:

Vue页面:

<template>
	<view class="content">
        <button @click="uploadFiles">点击上传</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {}
		},
		methods: {
			//h5、微信小程序、app上传文件
			uploadFiles() {
				//#ifdef H5
				uni.chooseFile({
					count: 1,
					extension: ['.doc,.xlsx,.docx'],
					success: res => {
						uni.showLoading({
							title: '导入中...',
							mask: true
						});
						uni.uploadFile({
							url: this.$BASE_URL + 'api/uploads/upload',
							file: res.tempFiles[0],
							name: 'file',
							success: (res) => {

							},
						});
					}
				});
				//#endif
				// #ifdef MP-WEIXIN
				uni.chooseMessageFile({
					count: 1, //默认100
					success: res => {
						uni.showLoading({
							title: '导入中...',
							mask: true
						});
						uni.uploadFile({
							url: this.$BASE_URL + 'api/uploads/upload',
							filePath: res.tempFiles[0].path,
							name: 'file',
							success: (res) => {

							},
						});
					}
				});
				//#endif
				// #ifdef APP-VUE
                //在这里导入打开安卓app本地文件选择器的封装方法
				this.$common.androidChooseFile(res => {
					var tempFiles = res;
					uni.uploadFile({
						url: this.$BASE_URL + 'api/uploads/upload',
						filePath: tempFiles,
						name: 'file',
						success: (res) => {

						}
					});
				},'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
				// #endif
			},
		},
	}
</script>

<style scoped></style>

封装的公共方法库utils/common.js: 

var common = {}
//安卓本地文件选择器
common.androidChooseFile = (callback, acceptType) => {
	var CODE_REQUEST = 1000;
	var main = plus.android.runtimeMainActivity();
	if (plus.os.name == 'Android') {
		var Intent = plus.android.importClass('android.content.Intent');
		var intent = new Intent(Intent.ACTION_GET_CONTENT);
		intent.addCategory(Intent.CATEGORY_OPENABLE);
		if (acceptType) {
			intent.setType(acceptType);
		} else {
			intent.setType("*/*");
		}
		main.onActivityResult = (requestCode, resultCode, data) => {
			if (requestCode == CODE_REQUEST) {
				const uri = data.getData();
				plus.android.importClass(uri);
				const Build = plus.android.importClass('android.os.Build');
				const isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
				const DocumentsContract = plus.android.importClass('android.provider.DocumentsContract');
				if (isKitKat && DocumentsContract.isDocumentUri(main, uri)) {
					if ("com.android.externalstorage.documents" == uri.getAuthority()) {
						console.log("6666");
						var docId = DocumentsContract.getDocumentId(uri);
						var split = docId.split(":");
						var type = split[0];

						if ("primary" == type) {
							var Environment = plus.android.importClass('android.os.Environment');
							callback(Environment.getExternalStorageDirectory() + "/" + split[1]);
						} else {
							var System = plus.android.importClass('java.lang.System');
							var sdPath = System.getenv("SECONDARY_STORAGE");
							if (sdPath) {
								callback(sdPath + "/" + split[1]);
							}
						}
					} else if ("com.android.providers.downloads.documents" == uri.getAuthority()) {
						var id = DocumentsContract.getDocumentId(uri);
						var ContentUris = plus.android.importClass('android.content.ContentUris');
						var contentUri = ContentUris.withAppendedId(
							//    Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
							Uri.parse("content://downloads/public_downloads"), id);
						callback(getDataColumn(main, contentUri, null, null));
					} else if ("com.android.providers.media.documents" == uri.getAuthority()) {
						var docId = DocumentsContract.getDocumentId(uri);
						var split = docId.split(":");
						console.log(split);
						var type = split[0];
						console.log(type);
						var MediaStore = plus.android.importClass('android.provider.MediaStore');
						if ("image" == type) {
							contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
						} else if ("video" == type) {
							contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
						} else if ("audio" == type) {
							contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
						} else {
							contentUri = MediaStore.Files.getContentUri("external");
						}

						console.log(contentUri);
						var selection = "_id=?";
						var selectionArgs = new Array();
						selectionArgs[0] = split[1];

						callback(getDataColumn(main, contentUri, selection, selectionArgs));
					}
				} else if ("content" == uri.getScheme()) {
					callback(getDataColumn(main, uri, null, null));
				} else if ("file" == uri.getScheme()) {
					callback(uri.getPath());
				}
			}
		}
		main.startActivityForResult(intent, CODE_REQUEST);
	}

	function getDataColumn(main, uri, selection, selectionArgs) {
		plus.android.importClass(main.getContentResolver());
		let cursor = main.getContentResolver().query(uri, ['_data'], selection, selectionArgs,
			null);
		plus.android.importClass(cursor);
		if (cursor != null && cursor.moveToFirst()) {
			var column_index = cursor.getColumnIndexOrThrow('_data');
			var result = cursor.getString(column_index)
			cursor.close();
			return result;
		}
		return null;
	}
}
export default common

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AIOps探索 | 面向多告警源,如何进行统一事件管理 (下)

文章来源&#xff1a;公众号ID-布博士&#xff08;擎创科技资深产品专家&#xff09; 书接上期&#xff0c;本期我们继续分享“统一事件管理”和“智能事件分析与处置”&#xff0c;新来的朋友点这里&#xff0c; AIOps探索 | 面向多告警源&#xff0c;如何进行统一事件管理 &a…

用户案例|Milvus 助力 Credal.AI 实现 GenAI 安全与可控

AIGC 时代&#xff0c;企业流程中是否整合人工智能&#xff08;AI&#xff09;对于的企业竞争力至关重要。然而&#xff0c;随着 AI 不断发展演进&#xff0c;企业也在此过程中面临数据安全管理、访问权限、数据隐私等方面的挑战。 为了更好地解决上述问题&#xff0c;Credal.A…

拼多多商品详情API接口丨百亿补贴商品数据丨秒杀商品数据

拼多多API接口是拼多多网提供的一种应用程序接口&#xff0c;允许开发者通过程序访问拼多多网站的数据和功能。通过拼多多API接口&#xff0c;开发者可以开发各种应用程序&#xff0c;如店铺管理工具、数据分析工具、购物比价工具等。在本章中&#xff0c;我们将介绍拼多多API接…

「薄荷绿」风电智慧运营,有效提高运营效率和能源利用率

随着能源需求的不断增加和全球变暖的加剧&#xff0c;人们对可再生能源的依赖程度不断提高。其中&#xff0c;风能作为一种可再生能源&#xff0c;其清洁、环保、无污染等特点备受青睐&#xff0c;其发展也越来越受到政府和企业的关注。然而&#xff0c;由于风能的不稳定性和不…

初创企业的智慧选择:解析小型企业如何借助ERP系统提升管理效率

ERP系统是不可或缺的企业技术解决方案&#xff0c;其全面性和综合性使其成为企业管理战略的核心组成部分&#xff1b;特别是对于渴望发展的小型企业和初创企业而言&#xff0c;ERP系统的价值更是不可忽视的。 对于大型企业&#xff0c;ERP系统提供了微观管理业务各个方面的能力…

JSP以监听生命周期为例 讲解监听器

好 最后 我们说说监听器 内容还是非常多的 这里 从老师哪里拿到的一个文案 大家可以查看具体内容 我们这里以监听声明周期为例 这边 我们在项目java模块下创建一个包 叫 listener 名字随便取 我们就这样 看着明显一点 然后 我们在下面创建一个java类 叫 test 因为是用来测试的…

视频集中存储/智能分析融合云平台EasyCVR平台接入rtsp,突然断流是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

宁夏一男子吸烟“逼”慢高铁 拘留7天 AI技术如何提升公共安全

最近&#xff0c;宁夏的一位男子杨某在高铁卫生间吸烟&#xff0c;触发了列车的烟雾报警系统&#xff0c;导致列车降速运行&#xff0c;最终被拘留7天。这个事件凸显了公共安全的重要性&#xff0c;特别是在交通工具上的安全管理。如果我们能够及时发现并阻止这种行为&#xff…

【论文解读】:大模型免微调的上下文对齐方法

本文通过对alignmenttuning的深入研究揭示了其“表面性质”&#xff0c;即通过监督微调和强化学习调整LLMs的方式可能仅仅影响模型的语言风格&#xff0c;而对模型解码性能的影响相对较小。具体来说&#xff0c;通过分析基础LLMs和alignment-tuned版本在令牌分布上的差异&#…

如何使用Docker本地搭建开源CMF Drupal并结合内网穿透公网访问

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址 前言 Dupal是一个强大的CMS&#xff0c;适用于各种不同的网站项目&#xff0c;从小型个人博客到大型企业级门户网站。它的学习…

java--枚举

1.枚举 枚举是一种特殊类 2.枚举类的格式 注意&#xff1a; ①枚举类中的第一行&#xff0c;只能写一些合法的标识符(名称)&#xff0c;多个名称用逗号隔开。 ②这些名称&#xff0c;本质是常量&#xff0c;每个常量都会记住枚举类的一个对象。 3.枚举类的特点 ①枚举类的…

Numpy数组的创建(第一讲)

Numpy数组的创建 &#xff08;第1讲&#xff09;         &#x1f379;博主 侯小啾 感谢您的支持与信赖。☀️ &#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f…

Modbus数据采集模块是什么?

随着工业自动化的快速发展&#xff0c;数据采集已成为现代工厂不可或缺的一环。在众多通信协议中&#xff0c;Modbus因其开放、简单、可靠的特点而广受青睐。那么&#xff0c;什么是Modbus数据采集模块&#xff0c;它又有哪些应用呢&#xff1f; 一、什么是Modbus数据采集模块…

打补丁,生成.diff文件

作者&#xff1a;爱塔居 文章目录 目录 前言 步骤 一、在根目录上&#xff0c;输入添加指令 二、输入修改内容指令 三、生成补丁 前言 自己的理解&#xff0c;仅供参考&#xff0c;欢迎指正。 补丁的话&#xff0c;在我看来就是方便评审&#xff0c;更方便看修改代码吧。 步骤…

2024年网络安全比赛--系统渗透测试(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.在渗透机中对服务器主机进行信息收集&#xff0c;将服务器开启的端口号作为 Flag 值提交; 2.在渗透机中对服务器主机进行渗透&#xff0c;在服务器主机中获取服务器主机名称&#xff…

智能优化算法应用:基于社交网络算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于社交网络算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于社交网络算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.社交网络算法4.实验参数设定5.算法结果6.参考…

【C语言】程序设计加密解密

&#x1f6a9;write in front&#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评百大博…

三层交换机配置DHCP服务

第一步&#xff1a;进入二层交换机Switch 1&#xff09;输入命令&#xff1a; Switch(config)#vlan 10 Switch(config)#vlan 20 2&#xff09;修改F0/1 和F0/2为access口&#xff0c;F0/24为trunk口 第二步&#xff1a;进入三层交换机 1&#xff09;输入命令 Switch(config)#…

Vulnhub项目:EMPIRE: LUPINONE

一、靶机地址 靶机地址&#xff1a;Empire: LupinOne ~ VulnHub 靶机描述&#xff1a; 来&#xff0c;看一看&#xff0c;同样的配方&#xff0c;不同的设计&#xff0c;难度为中等&#xff0c;迷路了就成困难了&#xff0c;不得不说&#xff0c;还真是&#xff01; 几次陷入…

kafka windows版本的下载安装,并且本地使用(亲测有效)

目录 1 问题2 下载 1 问题 本地启动一个kafka &#xff0c;然后可以实现生产者 消费者 2 下载 https://downloads.apache.org/kafka/ 选择一个版本下载 下载之后解压 修改配置 修改好之后&#xff0c;就保存&#xff0c;之后先启动zookper &#xff0c;之后再启动 ka…