uniapps使用HTML5的io模块拷贝文件目录

最近在集成sqlite到uniapp的过程中,因为要将sqlite数据库预加载,所以需要使用HTML5的plus.io模块。使用过程中遇到了许多问题,比如文件路径总是解析不到等。尤其是应用私有文档目录’_doc’。

根据官方文档:

为了安全管理应用的资源目录,规范对文件系统的操作,5+ API在系统应用目录的基础设计了应用沙盒目录, 分为私有目录和公共目录两种类型,私有目录仅应用自身可以访问,公共目录在多应用环境时(如小程序SDK)所有应用都可访问。应用私有资源目录,对应常量plus.io.PRIVATE_WWW,仅应用自身可读
应用私有文档目录,对应常量plus.io.PRIVATE_DOC,仅应用自身可读写
应用公共文档目录,对应常量plus.io.PUBLIC_DOCUMENTS,多应用时都可读写,常用于保存应用间共享文件
应用公共下载目录,对应常量plus.io.PUBLIC_DOWNLOADS,多应用时都可读写,常用于保存下载文件

plus.io.PRIVATE_WWW表示’_www’目录,实际值为1;plus.io.PRIVATE_DOC表示"__doc"目录,实际值为2;

因此不能把他们简单等同,要看方法需要的参数类型是什么。如果需要的参数类型是number,就使用常量,如果类型是string,则使用具体url路径。

别的不说了先,官方文档还是得仔细读读,虽然存在5%的小错误,但是还是可以提供帮助。

上代码!

我的需求是将数据库文件fit_path_app.db从_www拷贝到__doc目录下。该文件在项目中位于/static/database目录下,我是直接把整个目录拷贝到doc/db/目录下。

关于doc为什么直接使用字符串而不是本地文件路径,因为我发现如果在初始化时使用本地文件路径会解析地址失败,但是直接使用字符串则不会。原因不详。

最终使用下面的方法,目前在uniapp真机运行和使用mumu模拟器的情况下测试拷贝成功了,实体机测试晚点再看看,应该也问题不大。

<script>export default {onLaunch: function() {const sourcePath = plus.io.convertLocalFileSystemURL('_www/static/database');// const targetRootPath = plus.io.convertLocalFileSystemURL('_doc/')const targetRootPath = '_doc/'// const targetFilePath = plus.io.convertLocalFileSystemURL('_doc/fit_path_app.db')const targetFilePath = 'db/'const paths = {source: sourcePath,targetRoot: targetRootPath,targetFile: targetFilePath}console.log('源和目标路径:',JSON.stringify(paths));plus.io.resolveLocalFileSystemURL(sourcePath,function(srcEntry) {plus.io.resolveLocalFileSystemURL(targetRootPath,function(targetEntry) {// 拷贝srcEntry.copyTo(targetEntry,targetFilePath,function(entry) {console.log('拷贝成功:',entry.fullPath);},function(e) {conso.error('拷贝失败:',JSON.stringify(e));})}, function(e){console.error('解析目标地址失败:',JSON.stringify(e))})}, function(e) {console.error('解析源地址失败:',JSON.stringify(e))})console.log('Database initialized successfully.');console.log('App Launch')},onShow: function() {console.log('App Show')},onHide: function() {console.log('App Hide')}}
</script>

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

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

相关文章

使用 F12 查看 Network 及数据格式

在浏览器中&#xff0c;F12 开发者工具的 “Network” 面板是用于查看网页在加载过程中发起的所有网络请求&#xff0c;包括 API 请求&#xff0c;以及查看这些请求的详细信息和响应数据的。以下以常见的 Chrome 浏览器为例&#xff0c;介绍如何使用 F12 控制台查看 Network 里…

Redis 2.6.12在Win10系统上的安装教程

诸神缄默不语-个人CSDN博文目录 这个版本的安装包是跟同事要的&#xff0c;em&#xff0c;如果真的需要这个版本的话可以跟我要&#xff1a; 解压后双击第一个bat文件&#xff0c;即可挂起Redis服务&#xff1a;

分布式数据库中间件(DDM)的使用场景

华为云分布式数据库中间件&#xff08;DDM&#xff09;是一款专注于解决数据库分布式扩展问题的中间件服务&#xff0c;突破了传统数据库的容量和性能瓶颈&#xff0c;能够实现海量数据的高并发访问。以下是九河云总结的DDM的典型使用场景&#xff1a; 1. 互联网应用 在电商、…

Ubuntu16.04 安装OpenCV4.5.4 避坑

Ubuntu16.04 安装C版OpenCV4.5.4 Ubuntu16.04 VSCode下cmakeclanglldb调试c 文章目录 Ubuntu16.04 安装C版OpenCV4.5.41. 下载Opencv压缩包2. 安装Opencv-4.5.43. 配置OpenCV的编译环境4.测试是否安装成功 1. 下载Opencv压缩包 下载Opencv压缩包&#xff0c;选择source版本。…

RabbitMQ集群安装rabbitmq_delayed_message_exchange

1、单节点安装rabbitmq安装延迟队列 安装延迟队列rabbitmq_delayed_message_exchange可以参考这个文章&#xff1a; rabbitmq安装延迟队列-CSDN博客 2、集群安装rabbitmq_delayed_message_exchange 在第二个节点 join_cluster 之后&#xff0c;start_app 就会报错了 (CaseC…

QT开发:事件循环与处理机制的概念和流程概括性总结

事件循环与处理机制的概念和流程 Qt 事件循环和事件处理机制是 Qt 框架的核心&#xff0c;负责管理和分发各种事件&#xff08;用户交互、定时器事件、网络事件等&#xff09;。以下是详细透彻的概念解释和流程讲解。 1. 事件循环&#xff08;Event Loop&#xff09;的概念 …

博客搭建 — GitHub Pages 部署

关于 GitHub Pages GitHub Pages 是一项静态站点托管服务&#xff0c;它直接从 GitHub 上的仓库获取 HTML、CSS 和 JavaScript 文件&#xff0c;通过构建过程运行文件&#xff0c;然后发布网站。 本文最终效果是搭建出一个域名为 https://<user>.github.io 的网站 创建…

网络通信---MCU移植LWIP

使用的MCU型号为STM32F429IGT6&#xff0c;PHY为LAN7820A 目标是通过MCU的ETH给LWIP提供输入输出从而实现基本的Ping应答 OK废话不多说我们直接开始 下载源码 LWIP包源码&#xff1a;lwip源码 -在这里下载 ST官方支持的ETH包&#xff1a;ST-ETH支持包 这里下载 创建工程 …

【MySQL】存储引擎有哪些?区别是什么?

频率难度60%⭐⭐⭐⭐ 这个问题其实难度并不是很大&#xff0c;只是涉及到的相关知识比较繁杂&#xff0c;比如事务、锁机制等等&#xff0c;都和存储引擎有关系。有时还会根据场景选择不同的存储引擎。 下面笔者将会根据几个部分尽可能地讲清楚 MySQL 中的存储引擎&#xff0…

【系统环境丢失恢复】如何恢复和重建 Ubuntu 中的 .bashrc 文件

r如果你遇到这种情况&#xff0c;说明系统环境的.bashrc 文件丢失恢复&#xff1a; 要恢复 ~/.bashrc 文件&#xff0c;可以按照以下几种方式操作&#xff1a; 恢复默认的 ~/.bashrc 文件 如果 ~/.bashrc 文件被删除或修改&#xff0c;你可以恢复到默认的版本。可以参考以下…

人工智能丨智能化测试解决方案全面解析

智能化测试解决方案通过整合前沿的人工智能技术与自动化测试技术&#xff0c;为软件产品的测试工作带来了前所未有的高效与智能。 智能化测试解决方案主要内容 大语言模型私有部署&#xff1a;确保文档理解、代码分析和测试生成过程中的安全与隐私&#xff0c;让你无后顾之忧…

Element修改表格结构样式集合(后续实时更新)

场景 修改前端Element组件el-table样式 实现 线表格 <div class"tablepro"><el-table:data"tableData":header-cell-style"{ textAlign:center}"class"tablepro-table"borderstyle"width: 100%;height:100%"&g…

C++语言的语法糖

C语言的语法糖 在现代编程语言的设计中&#xff0c;语法糖&#xff08;Syntactic Sugar&#xff09;是一个非常重要的概念。它指的是一种编程语言所提供的语法特性&#xff0c;使得代码更加简洁易读&#xff0c;编写更加方便&#xff0c;而不是增加语言的功能。C作为一种强大的…

基于Redis实现短信验证码登录

目录 1 基于Session实现短信验证码登录 2 配置登录拦截器 3 配置完拦截器还需将自定义拦截器添加到SpringMVC的拦截器列表中 才能生效 4 Session集群共享问题 5 基于Redis实现短信验证码登录 6 Hash 结构与 String 结构类型的比较 7 Redis替代Session需要考虑的问题 8 …

c++入门----模板深入探究与仿函数

1.模板参数加入一个变量 一般只能是int&#xff0c;double要看c的版本&#xff0c;在最新的版本下是支持double模板参数的。 2.适配器的使用 template <class T,class containerdeque<T>> class stack { public:void push_back(const T& x) {_con.push_back…

【Vim Masterclass 笔记22】S09L40 + L41:同步练习11:Vim 的配置与 vimrc 文件的相关操作(含点评课内容)

文章目录 S09L40 Exercise 11 - Vim Settings and the Vimrc File1 训练目标2 操作指令2.1. 打开 vimrc-sample 文件2.2. 尝试各种选项与设置2.3. 将更改内容保存到 vimrc-sample 文件2.4. 将文件 vimrc-sample 的内容复制到寄存器2.5. 创建专属 vimrc 文件2.6. 对于 Mac、Linu…

kafka学习笔记5 PLAIN认证——筑梦之路

在Kafka中&#xff0c;SASL&#xff08;Simple Authentication and Security Layer&#xff09;机制包括三种常见的身份验证方式&#xff1a; SASL/PLAIN认证&#xff1a;含义是简单身份验证和授权层应用程序接口&#xff0c;PLAIN认证是其中一种最简单的用户名、密码认证方式&…

深入解析 Spring 框架中的事务传播行为

目录 &#xff08;一&#xff09;REQUIRED &#xff08;二&#xff09;SUPPORTS &#xff08;三&#xff09;MANDATORY &#xff08;四&#xff09;REQUIRES_NEW &#xff08;五&#xff09;NOT_SUPPORTED &#xff08;六&#xff09;NEVER &#xff08;七&#xff09;NE…

60,【1】BUUCF web [RCTF2015]EasySQL1

先查看源码 1&#xff0c;changepwd&#xff08;修改密码&#xff09; <?php // 开启会话&#xff0c;以便使用会话变量 session_start();// 设置页面的内容类型为 HTML 并使用 UTF-8 编码 header("Content-Type: text/html; charsetUTF-8");// 引入配置文件&…

高并发内存池_CentralCache(中心缓存)和PageCache(页缓存)申请内存的设计

三、CentralCache&#xff08;中心缓存&#xff09;_内存设计 &#xff08;一&#xff09;Span的创建 // 页编号类型&#xff0c;32位下是4byte类型&#xff0c;64位下是8byte类型 // #ifdef _WIN64 typedef unsigned long long PageID; #else _WIN32 typedef size_t PageI…