更新记录

1.0.8(2023-10-05)

  1. 修复Android新版基座语法兼容性问题

1.0.7(2023-09-18)

  1. 原始返回图片与base64之间的转换数据

1.0.6(2023-09-18)

  1. 修复Android新基座编译问题
查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.6.8,Android:4.4,iOS:9 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

常用工具类

项目导入插件后,需要自定义基座运行 不熟悉UTS插件集成步骤的同学可以参考:https://www.jianshu.com/p/830ccc503e29

常用文件处理插件

  1. 文件预览https://ext.dcloud.net.cn/plugin?id=17167

    • 支持pdf/word/excel/ppt/图片,支持本地或在线文件
  2. 文件增删查改copy遍历https://ext.dcloud.net.cn/plugin?id=14130

    • 文件读写、copy、move、遍历文件夹、是否存在、删除、重命名......等等
  3. 读取常用文件目录(包含U盘)https://ext.dcloud.net.cn/plugin?id=15243

    • uniapp(_www、_doc、_download)
    • Android(数据目录、文件目录、缓存目录、环境environment目录、SDCard目录、外接U盘)
    • iOS(documentDirectory、temporaryDirectory、libraryDirectory、cachesDirectory)
    • 从U盘读取或保存文件
  4. 读取本地相册图片视频音频https://ext.dcloud.net.cn/plugin?id=15711

    • 获取相册图片、视频、音频文件
    • 常用于自定义相册UI

工具类模块

1. 文件读写、copy、move、遍历文件夹、是否存在、删除、重命名......等等

2. 图片与Base64相互转换

3. 获取设备ID

4. 钥匙串数据存储,仅支持iOS

文件IO工具类


    import {
        UTSFileUtils
    } from "@/uni_modules/wrs-uts-commonutils"
  • 判断文件是否存在

                var wwwDir = plus.io.convertLocalFileSystemURL("_www")
                // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                if (wwwDir.endWith('/')) {
                    wwwDir = wwwDir.substring(0, wwwDir.length - 1)
                }

                // filePath需要传文件绝对路径,如:/xxx/xxx/aa.txt
                var filePath = wwwDir + "/static/loginSys/index.html"
                UTSFileUtils.isFileExists(filePath, (isExist)=>{
                    this.showMsg("isFileExists:" + filePath + "  存在:" + isExist)
                })
  • 重命名文件

                var filePath = "/sdcard/index.html"
                var newName = "aa.html"
                if (!this.isAndroid) {
                    var docDir = plus.io.convertLocalFileSystemURL("_doc")
                    if (docDir.endWith('/')) {
                        docDir = wwwDir.substring(0, docDir.length - 1)
                    }
                    filePath = docDir + "/loginSys/index.html"
                }
                 UTSFileUtils.rename(filePath, newName, (flag)=>{
                    this.showMsg("rename:" + filePath + "  result:" + flag)
                })
  • 判断是否是目录

                var wwwDir = plus.io.convertLocalFileSystemURL("_www")
                // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                if (wwwDir.endWith('/')) {
                    wwwDir = wwwDir.substring(0, wwwDir.length - 1)
                }
                var filePath = wwwDir + "/static/loginSys"
                UTSFileUtils.isDir(filePath, (isExist)=>{
                    this.showMsg("isDir:" + filePath + "  目录:" + isExist)
                })
  • 判断是否是文件

                var wwwDir = plus.io.convertLocalFileSystemURL("_www")
                // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                if (wwwDir.endWith('/')) {
                    wwwDir = wwwDir.substring(0, wwwDir.length - 1)
                }
                var filePath = wwwDir + "/static/loginSys/index.html"
                UTSFileUtils.isFile(filePath, (isFile)=>{
                    this.showMsg("isFile:" + filePath + "  文件:" + isFile)
                })
  • 判断目录是否存在,不存在则判断是否创建成功

                // 判断目录是否存在,如果不存在则创建目录
                var dir = "/sdcard/oneLevel/towlevel"
                if (!this.isAndroid) {
                    var docDir = plus.io.convertLocalFileSystemURL("_doc")
                    if (docDir.endWith('/')) {
                        docDir = wwwDir.substring(0, docDir.length - 1)
                    }
                    dir = docDir + "/oneLevel/towlevel"
                }

                UTSFileUtils.createOrExistsDir(dir, (suc)=>{
                    this.showMsg("createOrExistsDir:" + dir + "  result:" + suc)
                })
  • 复制文件或目录

var wwwDir = plus.io.convertLocalFileSystemURL("_www")
                // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                if (wwwDir.endWith('/')) {
                    wwwDir = wwwDir.substring(0, wwwDir.length - 1)
                }

                // copy目录时,srcPath目录下的所有文件都会copy到destPath下
                // var srcPath = wwwDir + "/static/loginSys"
                // var destPath = "/sdcard"

                var srcPath = "/sdcard/aa.txt"
                var destPath = "/sdcard/cc.txt"

                if (!this.isAndroid) {

                    var docDir = plus.io.convertLocalFileSystemURL("_doc")
                    // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                    if (docDir.endWith('/')) {
                        docDir = wwwDir.substring(0, docDir.length - 1)
                    }
                    console.log("docDir:" + docDir)

                    // ios copy文件
                    // srcPath = wwwDir + "/static/loginSys"
                    // destPath = docDir + "/loginSys"

                    // 复制文件时,只能复制到本目录
                    srcPath = docDir + "/loginSys/index.html"
                    destPath = docDir + "/bb/kk/copyIndex.html"
                }

                UTSFileUtils.copy(srcPath, destPath, (suc)=>{
                    this.showMsg("copy:" + srcPath + "  result:" + suc)
                })
  • 移动文件或目录

var wwwDir = plus.io.convertLocalFileSystemURL("_www")
                // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                if (wwwDir.endWith('/')) {
                    wwwDir = wwwDir.substring(0, wwwDir.length - 1)
                }

                // 移动文件时,destPath传目标文件的绝对路径,不能是目标文件的目录
                // var srcPath = "/sdcard/test.png"
                // var destPath = "/sdcard/bb/test.png"

                var srcPath = "/sdcard/images"
                var destPath = "/sdcard/bb/images"
                if (!this.isAndroid) {
                    srcPath = wwwDir + "/static/loginSys"

                    var docDir = plus.io.convertLocalFileSystemURL("_doc")
                    // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                    if (docDir.endWith('/')) {
                        docDir = docDir.substring(0, docDir.length - 1)
                    }

                    srcPath = docDir + "/loginSys"
                    destPath = docDir + "/bb/kk"

                }
                console.log("srcPath:" + srcPath)
                console.log("destPath:" + destPath)
                 UTSFileUtils.move(srcPath, destPath, (suc)=>{
                    this.showMsg("move:" + srcPath + "  result:" + suc)
                })
  • 删除文件或目录

                var path = "/sdcard/bb/images"
                if (!this.isAndroid) {

                    var docDir = plus.io.convertLocalFileSystemURL("_doc")
                    // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                    if (docDir.endWith('/')) {
                        docDir = docDir.substring(0, docDir.length - 1)
                    }
                    // path = docDir + "/loginSys/css"

                    path = docDir + "/loginSys/index.html"
                }

                UTSFileUtils.delete(path, (suc)=>{
                    this.showMsg("delete:" + path + "  result:" + suc)
                })
  • 获取目录下所有文件

                var wwwDir = plus.io.convertLocalFileSystemURL("_www")
                // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                if (wwwDir.endWith('/')) {
                    wwwDir = wwwDir.substring(0, wwwDir.length - 1)
                }
                var srcPath = wwwDir + "/static/loginSys"
                var path = srcPath
                UTSFileUtils.listFilesInDir(path, (list)=>{
                    // {"fileArray":[{"isFile":true,"name":"index.html"},{"isFile":false,"name":"css"},{"isFile":false,"name":"images"},{"isFile":false,"name":"js"},{"isFile":true,"name":"test.png"},{"isFile":true,"name":"test.pdf"},{"isFile":true,"name":"3d.svf"}]}
                    this.showMsg("listFilesInDir:" + path + "  result:" + JSON.stringify(list))
                })
  • 获取文件或目录大小

                var path = "/sdcard/test.pdf"
                if (!this.isAndroid) {

                    var docDir = plus.io.convertLocalFileSystemURL("_doc")
                    // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                    if (docDir.endWith('/')) {
                        docDir = docDir.substring(0, docDir.length - 1)
                    }
                    // path = docDir + "/loginSys/css"

                    path = docDir
                }
                 UTSFileUtils.getLength(path, (length)=>{
                     // 单位:字节byte
                    this.showMsg("getLength:" + path + "  result:" + length)
                })
  • 读取文件内容

                var path = "/sdcard/js/index.js"
                if (!this.isAndroid) {

                    var docDir = plus.io.convertLocalFileSystemURL("_doc")
                    // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                    if (docDir.endWith('/')) {
                        docDir = docDir.substring(0, docDir.length - 1)
                    }
                    path = docDir + "/loginSys/index.html"
                }
                 UTSFileUtils.readFile2String(path, (str)=>{
                    this.showMsg("readFile2String:" + path + "  result:" + str)
                })
  • 将字符串写入文件

                var filePath = "/sdcard/bb.txt"
                if (!this.isAndroid) {

                    var docDir = plus.io.convertLocalFileSystemURL("_doc")
                    // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                    if (docDir.endWith('/')) {
                        docDir = docDir.substring(0, docDir.length - 1)
                    }
                    filePath = docDir + "/write/index.txt"
                }
                var content = "aaaa"
                var append = true // 是否拼接在现有文件内容后面
                UTSFileUtils.writeFileFromString(filePath, content, append, (suc)=>{
                    this.showMsg("writeFileFromString:" + filePath + "  result:" + suc)
                })
  • 获取文件目录

                var filePath = "/sdcard/bb.txt"
                if (!this.isAndroid) {

                    var wwwDir = plus.io.convertLocalFileSystemURL("_www")
                    // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                    if (wwwDir.endWith('/')) {
                        wwwDir = wwwDir.substring(0, wwwDir.length - 1)
                    }
                    filePath = wwwDir + "/static/loginSys/index.html"
                }
                UTSFileUtils.getDirName(filePath, (dirName)=>{
                    this.showMsg("getDirName:" + filePath + "  result:" + dirName)
                })

图片工具类


    import {
        UTSImageUtils
    } from "@/uni_modules/wrs-uts-commonutils"
  • 图片转Base64

注意: 有些android系统转出来的图片会以“data;image/png;base64,”为前缀,iOS没有这个前缀


                var wwwDir = plus.io.convertLocalFileSystemURL("_www")
                // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                if (wwwDir.endWith('/')) {
                    wwwDir = wwwDir.substring(0, wwwDir.length - 1)
                }
                var filePath = wwwDir + "/static/loginSys/images/logo.png"
                // filePath = "https://t7.baidu.com/it/u=2604797219,1573897854&fm=193&f=GIF"
                UTSImageUtils.image2Base64(filePath, (base64) => {
                    // ios中,图片的base64会以image2Base64:为前缀
                    this.showMsg("image2Base64:" + base64)
                })
  • Base64转图片

                var base64Str =
                    "iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAFLSURBVHic7dyxbQIxHEbxzxYVNRukDAMQNmCRMAIzMALZgZoNThngWjagpoxThC4Jr0HyRXm/9qTzX0/2VdaVJFke1k8tH/ukbJLM879dk3YqqbtxO5zLV5y8J23Re7JpKZeSrGa3nWOcb9qipe3r7VjpR2VT4zfnnnntPcHUGQgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIzB7xkvF1+PXZ8m39iCW6re0OAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAg+5H3TPvfs7f4E7CBgIGAgYCBgIGAiU58NL6z3ElLmDgIGAgYCBgIGAgYCBgIGAgYCBQE1y7T3EhF1r0k69p5iudqoldZeUS+9RpqdcSuqujtvhXJJV0o7xuCVfvwk8lmQ1bofzJxi+NCeqg7Y3AAAAAElFTkSuQmCC"
                var filePath = "/sdcard/test/test.png"
                if(!this.isAndroid) {
                    var docDir = plus.io.convertLocalFileSystemURL("_doc")
                    // Android获取的absPath以/结尾,iOS获取的absPath不是/结尾 
                    if (docDir.endWith('/')) {
                        docDir = wwwDir.substring(0, docDir.length - 1)
                    }

                    // 复制文件时,只能复制到本目录
                    filePath = docDir + "/test/test.png"
                    console.log("filePath: " + filePath)
                }
                UTSImageUtils.base642Image(base64Str, filePath, (suc) => {
                    console.log("base642Image:" + suc)
                })

设备工具类


    import {
        UTSDeviceUtils
    } from "@/uni_modules/wrs-uts-commonutils"
  • 获取设备ID

在iOS里除非系统重置可能会导致设备ID改变,app重装或升级系统都不会改变设备ID


let deviceID = UTSDeviceUtils.getDeviceID()

钥匙串工具类,仅支持iOS

钥匙串数据存储主要用于app删除重装后还能获取上次保存的数据


    import {
        UTSKeyChainUtils
    } from "@/uni_modules/wrs-uts-commonutils"
  • 保存值

例如:保存登录模块账号为zhangsan的密码


let value = "123xxx"
let service = "login_module"
let account = "zhangsan"
UTSKeyChainUtils.setValue(value, service, account)
  • 获取值

let service = "login_module"
let account = "zhangsan"
let value = UTSKeyChainUtils.getValue(service, account)
  • 删除值

let service = "login_module"
let account = "zhangsan"
UTSKeyChainUtils.deleteValue(service, account)

隐私、权限声明

1. 本插件需要申请的系统权限列表:

文件读写权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问