uni-app使用本地文件在移动端长久存储数据

news/2024/10/18 8:33:05/

需求

1.本地存储数据。
2.在连接上服务器后可以完成移动端和服务端之间的数据同步。

解决方案

  • uni-app 框架中使用plus.io.requestFileSystem技术完成数据在手机端的持久化处理。

代码

  1. plus.io.requestFileSystem代码
let addr = "/storage/emulated/0/database/";export default {storage(className, data) {plus.io.requestFileSystem(plus.io.PRIVATE_DOC, // 程序私有文档目录常量fs => {// 创建或打开文件, fs.root是根目录操作对象,直接fs表示当前操作对象fs.root.getFile(addr + className, {create: true},// 文件不存在则创建fileEntry => {// 文件在手机中的路径fileEntry.createWriter(writer => {// 写入文件成功完成的回调函数writer.onwrite = e => {//console.log('写入成功');};// 向文件中写入数据writer.write(JSON.stringify(data));});},e => {console.log('getFile failed: ', e);});},e => {console.log(e.message);});},read(className) {let that = this;return new Promise((resolve, reject) => {plus.io.requestFileSystem(plus.io.PRIVATE_DOC,fs => {fs.root.getFile(addr + className, {create: false},fileEntry => {fileEntry.file(function(file) {//console.log('文件大小:' + file.size + '-- 文件名:' + file.name);//创建读取文件对象let fileReader = new plus.io.FileReader();//以文本格式读取文件数据内容fileReader.readAsText(file, 'utf-8');//文件读取操作完成时的回调函数fileReader.onloadend = function(evt) {resolve(evt.target.result)};});},e => {reject(e);});},e => {reject(e);console.log(e.message);});})}
}
  1. end

权限配置

在manifest.json文件中,添加权限。

{...,/* 5+App特有相关 */"app-plus" : {...,"distribute" : {/* android打包配置 */"android" : {"permissions" : [...,"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>","<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",...]},...}},...
}

踩坑记录

  1. 无法写入,异常提示为:{ “code”: 10, “message”: “执行出错”}
    答:可能是因为权限没有开通,需要开通存储空间权限。
  2. end

http://www.ppmy.cn/news/733546.html

相关文章

社科院杜兰大学能源管理硕士——选对专业从容应对未来发展趋势

对于未知的未来&#xff0c;我们充满期待。未来职场什么样的人才最抢手&#xff1f;其实对于未来确定不变的&#xff0c;只有变化本身。对于职场人的知识结构和技能来说&#xff0c;更需要不断的迭代更新。在职继续攻读硕士学位&#xff0c;选对专业很重要。社科院与美国杜兰大…

【网络安全带你练爬虫-100练】第3练:遍历获取到的列表中元素

目录 一、前言&#xff1a; 二、分析代码 三、完善代码 一、前言&#xff1a; &#xff08;1&#xff09;本练&#xff0c;我们来完善一下对于数据的处理 &#xff08;2&#xff09;对于同一标签内的内容的遍历爬取 上一段代码的&#xff0c;我们是不是在那个曾用名、高新…

一键 为 Win7 安装盘 注入 USB 3.0驱动

一键 为 Win7 安装盘 注入 USB 3.0驱动 以使得 可以通过USB 3.0 安装Win7 https://downloadcenter.intel.com/zh-cn/download/25476/Windows7-USB3-0Creator 只需要下载此软件(Windows7 USB3.0 Creator),选择 你的安装所用的U盘, 轻轻一点 ,就等待成功吧

ESP32设备驱动-PCF8575IO扩展器驱动

PCF8575IO扩展器驱动 文章目录 PCF8575IO扩展器驱动1、PCF8575介绍2、硬件准备3、软件准备4、驱动实现1、PCF8575介绍 PCF8575用于两线双向总线 (I2C) 的 16 位 I/O 扩展器专为 2.5-V 至 5.5-V VCC 操作而设计。 PCF8575 器件通过 I2C 接口 [串行时钟 (SCL)、串行数据 (SDA)]…

【拼多多API商品详情页面采集】具体的API接口调用步骤

要从拼多多获取商品数据&#xff0c;可以使用拼多多提供的API接口。首先需要注册一个拼多多开放平台的开发者账号&#xff0c;然后创建一个应用程序&#xff0c;获取应用程序的app_id和app_secret&#xff0c;以在API请求中进行身份验证。 在使用API接口时&#xff0c;需要按照…

Loki+Grafana监控docker容器日志

目标&#xff1a;最近开发人员时常需要查看各个环境项目中容器日志&#xff0c;而直接通过ssh终端使用docker logs命令查看日志不太安全&#xff0c;这会导致很多人员知道服务器的账户和密码&#xff0c;有没有一种可以收集所有容器日志的平台系统。那么这套系统就是LokiGrafan…

如何在Android手机中更改SIM卡

So you got a new phone, which means swapping your SIM card from the old to the new. While it sounds slightly daunting if you’ve never done it before, it’s quite easy. Here’s how. 因此,您有一部新手机,这意味着将您的SIM卡从旧的换成新的。 如果您以前从未做…

stm32 SD(SDSC)卡的学习与SPI 模式应用(卡槽介绍)

这次的sd卡内容比较多&#xff0c;写的比较多&#xff0c;关于卡的命令和寄存器方面内容较多下面只是简要题一下&#xff0c;我们只需要指导如何使用即可&#xff0c;深入研究相对比较困难。 什么是SD 卡&#xff1f; SD 卡&#xff08; Secure Digital Memory Card&#xff0…