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 H5uni.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-WEIXINuni.chooseMessageFile({count: 1, //默认100success: 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

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

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

相关文章

java将List<Object>转为List<Map<String, Object>>,可复用

在开发时我们有时候需要将将List转为List<Map<String, Object>>&#xff0c;可以参考下面的方法 ObjectToMapConverter.java import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.M…

【开放集检测OSR】开放集检测和闭集检测的区别和联系:从模型角度进行理解

定义一个分类器&#xff1a; D t r a i n { ( x i , y i ) } i 1 N ⊂ X C D_{train} \{(x_i, y_i)\}^N _{i1} ⊂ X C Dtrain​{(xi​,yi​)}i1N​⊂XC X&#xff1a;输入空间 ( x i , y i ) (x_i, y_i) (xi​,yi​): 输入的图像x以及其对象的类别标签yC &#xff1a;已知…

web:[GXYCTF2019]BabyUpload(文件上传、一句话木马、文件过滤)

题目 页面显示为文件上传 随便上传一个文件看看 上传一个文本文件显示 上传了一个图片显示 上传包含一句话木马的图片 上传了一个包含php一句话木马的文件&#xff0c;显示如上 换一个写法 上传成功 尝试上传.htaccess&#xff0c;上传失败&#xff0c;用抓包修改文件后缀 …

LangChain 23 Agents中的Tools用于增强和扩展智能代理agent的功能

LangChain系列文章 LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储&#xff0c;读取YouTube的视频文本搜索I…

Apache Flink(四):Flink 其他实时计算框架对比

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 根据前文描述我们知道Flink主要处…

LNMP网站架构分布式搭建部署(编译安装)

目录 一、数据库编译安装 二、nginx编译安装 三、php编译安装 三、通过nfs将三台不同的主机资源共享 四、基础测试 五、完成WordPress站点部署 六、完成bbs论坛站点部署 一、数据库编译安装 1、先下载安装包到/opt目录中&#xff0c;最好选择mysql-boost-5.7.44.tar.gz版…

步进电机驱动芯片TB6600HG部分翻译

有些参数没看懂。一边设计&#xff0c;一边修正。 目录 1.芯片梗概 2.引脚配置 1)引脚含义 2)内部逻辑 3.功能详解 1&#xff09;励磁模式设置 2&#xff09;功能设置 3&#xff09;初始模式 4&#xff09;100% 电流设置(电流值) 5&#xff09;OSC 6&#xff09;衰减…

python 使用 AppiumService 类启动appium server

一、前置说明 在Appium的1.6.0版本中引入了AppiumService类&#xff0c;可以很方便的通过该类来管理Appium服务器的启动和停止。 二、操作步骤 import osfrom appium.webdriver.appium_service import AppiumService as OriginalServerfrom libs import pathclass AppiumSer…

windows判断exe应用程序是否在使用的bat脚本

脚本 REM 查询进程是否存在 tasklist|findstr /i "mysqld.exe">nul &&echo y >2.log ||echo n >2.log REM 读取文本内容赋值给变量 set /P resu<2.log if %resu% y (echo process in use ) else (echo process not in use )我们已mysqld.exe…

如何在小红书上使用item_get获取商品详情?

小红书是一个流行的社交购物平台&#xff0c;许多用户在这里分享自己的购物体验和产品评价。对于电商卖家来说&#xff0c;获取商品详情是非常重要的&#xff0c;这有助于他们了解客户需求、优化产品定位和提高服务质量。本文将介绍如何在小红书上使用item_get获取商品详情。 …

C++ day58 每日温度 下一个更大元素

题目1&#xff1a;739 每日温度 题目链接&#xff1a;每日温度 对题目的理解 temperature[i]表示每天的温度&#xff0c;返回数组answer&#xff0c;answer[i]指对于第i天&#xff0c;下一个更高温度最近出现在几天后&#xff0c;如果气温在这之后都不会升高&#xff0c;用0…

Serial for Mac:Macos 电脑全功能串行终端管理软件

随着科技的飞速发展&#xff0c;串行通信在各个领域的应用越来越广泛。从硬件调试到数据传输&#xff0c;串行通信在很大程度上决定了设备的性能和稳定性。在这个背景下&#xff0c;一款全面而高效的串行终端管理软件显得尤为重要。而Serial for Mac正是这样一款备受推崇的软件…

720度vr虚拟家居展厅提升客户的参观兴致

VR虚拟展厅线上3D交互展示的优势有以下几点&#xff1a; 打破了场馆的展示限制&#xff0c;可展示危险性制品、珍贵稀有物品、超大型设备等&#xff0c;同时提供了更大的展示空间和更丰富的展示内容。 可提供企业真实环境的实时VR全景参观&#xff0c;提升潜在客户信任度。 提供…

JAVA导出PDF(一)

思路一&#xff1a;直接导出pdf 使用freemarker和itext把html转pdf&#xff0c;存在中文乱码&#xff0c;宋体不识别&#xff0c;需下载simsun.ttc字体&#xff0c;空白占位符不识别等等问题&#xff0c;对前端依赖性较大&#xff0c;不推荐&#xff1b; 适用范围&#xff1a;…

批量操作Excel的四个方法(求和、移动、对比、合并)

Excel文件肯定少不了保存大量数据&#xff0c;那么在使用excel的时候会不会要大批量数据进行操作&#xff1f;今天分享4个快速使用excel操作的小技巧。希望能够帮大家提高excel制作效率。 技巧一&#xff1a;快速求和 当你想要分别得到行列的总和&#xff0c;我们可以选中表格…

看图学源码之 CopyOnWriteArrayList 源码分析

基本简介&#xff1a; 是Java中的一个线程安全的List实现&#xff0c;也是ArrayList 的安全版本&#xff0c;所以就不会有ArrayList 的并发修改异常 的问题产生了 原理 每次在对 List 进行修改时&#xff0c;创建一个新的副本&#xff08;即拷贝&#xff09;&#xff0c;而不…

计算机组成原理—存储系统

文章目录 存储系统分层RAM存储器DRAM刷新地址线复用 ROM存储器疑问 提升主存访问速度双端口RAM多模块存储器单体多字存储器多体并行存储器 主容量扩展cache高速缓存器cache与主存映射&#xff08;读策略&#xff09;替换策略cache写策略 存储方式页式存储器虚拟存储器 计组真的…

ubuntu 14.04的git 错误: gnutls_handshake() failed: Handshake failed

文章目录 篇头错误提示错误原因解决方法 篇头 最近使用ubuntu14.04&#xff0c;搭配gitlab出现此gnutls_handshake() failed: Handshake failed问题&#xff0c;一直未能解决&#xff0c;直到找到本文的脚本&#xff0c;修正编译错误后&#xff0c;终于得以解决。记录一下&…

Chromium包含的内容(引擎)

Chromium包含了绘制引擎和JavaScript解释引擎。 绘制引擎是Chromium用于渲染网页内容的核心组件之一。Chromium使用的绘制引擎是Blink&#xff0c;它是一个高性能的、开源的Web渲染引擎。Blink继承自WebKit&#xff0c;但在2013年被Google分离出来&#xff0c;成为了Chromium项…

【EI会议征稿】第三届密码学、网络安全和通信技术国际会议(CNSCT 2024)

第三届密码学、网络安全和通信技术国际会议&#xff08;CNSCT 2024&#xff09; 2024 3rd International Conference on Cryptography, Network Security and Communication Technology 随着互联网和网络应用的不断发展&#xff0c;网络安全在计算机科学中的地位越来越重要&…