更新记录
1.0.4(2024-09-28)
修复 选择文件 时候重复多次选择后,会提示被移除的监听
1.0.3(2024-04-28)
修复页面销毁后再获取赋值后页面数据不更新的bug
1.0.2(2024-04-03)
添加视频播放案例说明
查看更多平台兼容性
Vue2 | Vue3 |
---|---|
√ | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 4.07,Android:5.0,iOS:不支持,HarmonyNext:不确定 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
× | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
原生安卓Android文件选择器 返回获取的文件内容 复制文件到指定目录
需要打包自定调试包才能测试
不保证所有的安卓手机都兼容,自己用的两个安卓手机测试是没问题的
你手机沙盒的详细地址去看官方给的介绍文档 https://ask.dcloud.net.cn/article/36199
vue2需要自己去修改下写法,以下是vue3的案例
需要先打包为自定义调试包,才可以调试
调用插件 :
import {
UTSchoosefile,
UTScopyfile,
UTSgetStorage,
UTStorefile
} from "@/uni_modules/mushan-choosefile";
完整页面调用案例
<template>
<view>
<button @click="onUTSchoosefile">打开文件选择</button>
<button @click="onUTScopyfile">复制文件</button>
<button @click="onUTStorefile">文本数据保存为txt文件</button>
<button @click="onUTSgetStorage">获取手机的内部存储地址和外部存储地址</button>
<video :src="vdedioUrl" style="width: 100%; height: 200px;"></video>
</view>
</template>
<script setup>
import {
onShow,
onReady,
onReachBottom,
onPullDownRefresh,
onShareAppMessage
} from '@dcloudio/uni-app';
import {
getCurrentInstance,
ref,
reactive,
inject,
computed,
onMounted
} from 'vue';
import {
UTSchoosefile,
UTScopyfile,
UTSgetStorage,
UTStorefile
} from "@/uni_modules/mushan-choosefile";
//打开选择器选择后直接获取文件内容、名称、大小,返回不了当前文件地址,安卓10以上的内容限制问题,有沙箱空间会返回虚拟路径解析要做很多版本兼容,高级权限获取又比较麻烦,需要的话建议吧文件复制到自己指定目录再去操作。https://ask.dcloud.net.cn/article/36199 安卓10+对应的说明
//PDF文件的拿到返回的内容后 自己找pdfjs去解析内容
function onUTSchoosefile(){
UTSchoosefile((res)=>{
let data = JSON.parse(res)
console.log(data)
if(data.msg == '获取成功'){
console.log(data.name)
console.log(data.size)
console.log(data.content)
}
})
}
//获取手机对应的外部和内部存储地址路径,如果想知道那个更详细去地址去看官方文档给的地址https://ask.dcloud.net.cn/article/36199 上面有详细的说明
function onUTSgetStorage(){
UTSgetStorage((res)=>{
let data = JSON.parse(res);
console.log(data);
})
}
//打开选择器选择文件后,点击选择文件会复制到对应的目录下面和对应的名称,第一个参数是对应的地址必填,第二个参数是要复制过去的文件名称,如果不填写名称就默认是复制文件的名称 https://ask.dcloud.net.cn/article/36199
//比如复制后可以直接进行播放,视频播放需要你自己项目选择了添加了视频模块 VideoPlayer,uni.UNID5C9D77 是你自己的项目包名,__UNI__D5C9D77是你该项目的appid,详细去看https://ask.dcloud.net.cn/article/36199
let vdedioUrl = ref('')
function onUTScopyfile(){
UTScopyfile('/storage/emulated/0/Android/data/uni.UNID5C9D77/.__UNI__D5C9D77/documents','',(res)=>{
let data = JSON.parse(res)
console.log(data)
if(data.msg == '文件复制成功'){
console.log(data.file)
console.log(data.msg)
console.log(data.filePath)
vdedioUrl.value = data.filePath;
}
})
}
//文本数据保存为txt的文本文件
function onUTStorefile(){
let parame = {
textData: '0x53,0x5a,0x50,0x53,0x43,0x31,0x30,0x30,0x30,0x30,0x56,0x31,0x30,0x30,0xf4,0x01,0xb8,0x0b,0xfa,0x00,0xd0,0x02,0xa4,0x01,0x08,0x02,0xb6,0x03,0x3c,0x00,0x80,0xff',
fileName: 'blueText.txt',
}
UTStorefile(parame,(res)=>{
let data = JSON.parse(res)
if(data.msg == '成功'){
console.log(data)
}
})
}
</script>
<style>
</style>