『uniapp』把接口的内容下载为txt本地保存 / 读取本地保存的txt文件内容(详细图文注释)
目录
- 预览效果
- 思路分析
- downloadTxt 方法
- readTxt 方法
- 完整代码
- 总结
欢迎关注 『uniapp』 专栏,持续更新中
欢迎关注 『uniapp』 专栏,持续更新中
预览效果
思路分析
downloadTxt 方法
该方法主要完成两个任务:
- 下载 txt 文件:通过 uni.downloadFile 方法从指定的 URL 下载文件,返回的是临时文件路径。
- 保存文件:使用 uni.saveFile 将临时文件保存到本地。
- 读取文件:文件保存完成后,调用 plus.io API 读取文件内容,并将其转换为 JSON 格式存储到 resultData 中。
步骤:
- 通过 uni.downloadFile 下载文件。
- 使用 uni.saveFile 保存文件并获取本地路径。
- 使用 plus.io.resolveLocalFileSystemURL 读取本地文件,FileReader 将其内容读取为文本并解析成 JSON 格式。
readTxt 方法
该方法用于读取已下载并保存的本地 txt 文件。
首先检查 savedFilePath 是否为空,确保文件已下载。如果文件路径有效,调用 readFile 方法读取文件并解析其内容。
if (!this.savedFilePath) {console.warn('路径为空,请先下载后再读取文件');return;
}
await this.readFile(this.savedFilePath);
完整代码
<template><view><button @click="downloadTxt">下载本地txt</button><button @click="readTxt">读取本地txt</button><button @click="consoleData">输出txt内容</button><button @click="getSavedFileInfo">输出txt文件信息</button></view>
</template><script>export default {data() {return {resultData: {}, //得到的数据savedFilePath: uni.getStorageSync('savedFilePath') || '', //文件保存路径,每次启动读取这个路径dateUrl: "http://t.weather.sojson.com/api/weather/city/101030100", //你的json格式api};},methods: {getSavedFileInfo() {uni.getSavedFileInfo({filePath: this.savedFilePath, //仅做示例用,非真正的文件路径success: function(res) {console.log('文件大小',res.size);console.log('创建时间的时间戳 可以根据时间戳决定是否更新本地的txt',res.createTime);}});},// 输出 txt 内容consoleData() {console.warn('resultData:', this.resultData);console.warn('savedFilePath:', this.savedFilePath);},// 下载并保存 txt 文件async downloadTxt() {try {const res = await this.downloadFile();if (res.statusCode === 200) {const savedFilePath = await this.saveFile(res.tempFilePath);this.savedFilePath = savedFilePath;await this.readFile(savedFilePath);} else {console.error('下载返回响应代码错误:', res);}} catch (err) {console.error('下载或文件操作失败:', err);}},// 读取本地 txt 文件async readTxt() {if (!this.savedFilePath) {console.warn('路径为空,请先下载后再读取文件');return;}try {await this.readFile(this.savedFilePath);} catch (err) {console.error('读取文件失败:', err);}},// 文件下载函数downloadFile() {return new Promise((resolve, reject) => {uni.downloadFile({url: this.dateUrl,success: (res) => {if (res.statusCode === 200) {resolve(res);} else {reject(new Error('下载失败,状态码: ' + res.statusCode));}},fail: (err) => reject(err),});});},// 文件保存函数saveFile(tempFilePath) {return new Promise((resolve, reject) => {uni.saveFile({tempFilePath,success: (saveRes) => {console.log('下载并保存txt成功');const filePath = plus.io.convertLocalFileSystemURL(saveRes.savedFilePath);uni.setStorageSync('savedFilePath',filePath)resolve(filePath);},fail: (err) => reject(err),});});},// 文件读取函数readFile(filePath) {return new Promise((resolve, reject) => {plus.io.resolveLocalFileSystemURL(filePath, (entry) => {entry.file((file) => {const fileReader = new plus.io.FileReader();fileReader.onloadend = (evt) => {try {const jsonData = JSON.parse(evt.target.result);this.resultData = jsonData;console.log('成功读取并转为JSON:', this.resultData);resolve();} catch (e) {reject(new Error('解析文件失败: ' + e.message));}};fileReader.readAsText(file, 'utf-8');}, (err) => reject(err));}, (err) => reject(err));});},},};
</script><style lang="scss" scoped>
</style>
总结
大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!
版权声明:
发现你走远了@mzh原创作品,转载必须标注原文链接
Copyright 2024 mzh
Crated:2024-4-1
欢迎关注 『uniapp』 专栏,持续更新中
欢迎关注 『uniapp』 专栏,持续更新中
『未完待续』
相关文章:

『uniapp』把接口的内容下载为txt本地保存 / 读取本地保存的txt文件内容(详细图文注释)
目录 预览效果思路分析downloadTxt 方法readTxt 方法 完整代码总结 欢迎关注 『uniapp』 专栏,持续更新中 欢迎关注 『uniapp』 专栏,持续更新中 预览效果 思路分析 downloadTxt 方法 该方法主要完成两个任务: 下载 txt 文件:通…...
C/C++ 面试复习笔记(2)
C语言如何实现快速排序算法? 答案:快排是一种分治算法,选择一个基准元素,将数据划分成两部分,然后递归排序 补充: void quick_sort(int arr[], int start, int end) {//判断是否需要排序if (start > …...
宝马集团推进数字化转型:强化生产物流与财务流程,全面引入SAP现代架构
2025年6月,宝马集团宣布在生产物流与财务流程领域取得重大数字化成果。这些进展标志着集团全球范围内采用基于云的新型SAP架构进入关键阶段,旨在提升运营效率、透明度和AI能力,为未来工业发展奠定技术基础。 一、生产物流全球数字化部署 宝…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 时间事件处理部分)
揭秘高效存储模型与数据结构底层实现 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 时间事件:serverCron函数更新服务器时间缓存更新LRU时钟-lruclock更新服务器每秒执行命令次…...

【DAY40】训练和测试的规范写法
内容来自浙大疏锦行python打卡训练营 浙大疏锦行 知识点: 彩色和灰度图片测试和训练的规范写法:封装在函数中展平操作:除第一个维度batchsize外全部展平dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭drop…...
C语言 标准I/O函数全面指南
C标准I/O函数全面指南 本指南详细介绍了C语言中用于文件操作的标准输入/输出函数,包括单字符I/O、字符串I/O、格式化I/O、块I/O以及文件光标操作。每个部分包含函数定义、使用说明和实用示例,适合学习、复习以及博客发布。内容采用清晰的Markdown格式&a…...

el-select 实现分页加载,切换也数滚回到顶部,自定义高度
el-select 实现分页加载,切换也数滚回到顶部,自定义高度 1.html <el-form-item label"俱乐部:" prop"club_id" label-width"120px"><el-select :disabled"Boolean(match_id)" style"w…...

Langchaine4j 流式输出 (6)
Langchaine4j 流式输出 大模型的流式输出是指大模型在生成文本或其他类型的数据时,不是等到整个生成过程完成后再一次性 返回所有内容,而是生成一部分就立即发送一部分给用户或下游系统,以逐步、逐块的方式返回结果。 这样,用户…...
Jenkins:自动化流水线的基石,开启 DevOps 新时代
从持续集成到持续交付的全流程自动化工具 一、什么是 Jenkins? Jenkins 是一款开源的 自动化服务器,专注于持续集成(CI)和持续交付(CD)。它通过插件化的架构支持几乎所有的开发、运维和测试工具ÿ…...

学习经验分享【40】目标检测热力图制作
目标检测热力图在学术论文(尤其是计算机视觉、深度学习领域)中是重要的可视化分析工具和论证辅助手段,可以给论文加分不少。主要作用一是增强论文的可解释性与说服力:论文中常需解释模型 “如何” 或 “为何” 检测到目标…...

C#里与嵌入式系统W5500网络通讯(3)
有与W5500通讯时,需要使用下面的寄存器: PHYCFGR (W5500 PHY Configuration Register) [R/W] [0x002E] [0b10111XXX] PHYCFGR configures PHY operation mode and resets PHY. In addition, PHYCFGR indicates the status of PHY such as duplex, Speed, Link. 这张表格详细…...

用OpenNI2获取奥比中光Astra Pro输出的深度图(win,linux arm64 x64平台)
搞了一个奥比中光Astra Pro,想在windows平台,和linux rk3588 (香橙派,ubuntu2404,debian)上获取深度信息,之前的驱动下载已经不好用了,参考如下 Astra 3D相机选型建议 - 知乎https://zhuanlan.zhihu.com/p/594485674 …...

Unity VR/MR开发-VR设备与适用场景分析
视频讲解链接:【XR马斯维】VR/MR设备与适用场景分析?【UnityVR/MR开发教程--入门】_游戏热门视频...

Linux: network: switch:arp cache更新规则 [chatGPT]
文章目录 介绍概念普通包带有不同的mac,是否更新arp cache?普通包带有相同的mac,是否刷新 aging timeswitch是否会主动学习介绍 关于arp cache在switch侧的行为。有很多问题需要理解。 概念 HP L3 - IP Services Configuration Guide 文档里有写:dynamic arp entry的解说…...

Java网络编程API 1
Java中的网络编程API一共有两套:一套是UDP协议使用的API;另一套是TCP协议使用的API。这篇文章我们先来介绍UDP版本的API,并尝试来写一个回显服务器(接收到的请求是什么,返回的响应就是什么)。 UDP数据报套…...
Android协程学习
目录 Android上的Kotlin协程介绍基本概念与简单使用示例协程的高级用法 结构化并发线程调度器(Dispatchers)自定义调度器并发:同步 vs 异步 异步并发(async 并行执行)同步顺序执行协程取消与超时 取消机制超时控制异步数据流 Flow协程间通信 使用 Channel使用 StateFlow /…...
Angular报错:cann‘t bind to ngClass since it is‘t a known property of div
遇到的错误: Cant bind to ngClass since it isnt a known property of div这个错误是 Angular 中 最常见的模板编译错误之一,通常出现在你试图使用 ngClass 指令,但 Angular 没有识别它的情况下。 ✅ 错误的根本原因 Angular 不知道 ngCla…...
uniapp+vue3实现CK通信协议(基于jjc-tcpTools)
1. TCP 服务封装 (tcpService.js) export class TcpService {constructor() {this.connections uni.requireNativePlugin(jjc-tcpTools)this.clients new Map() // 存储客户端连接this.servers new Map() // 存储服务端实例}// 创建 TCP 服务端 (字符串模式)createStringSe…...
Python爬虫实战:研究urlparse库相关技术
1 引言 1.1 研究背景与意义 网络爬虫作为互联网数据采集的核心技术,在信息检索、舆情分析、数据挖掘等领域具有广泛应用。随着 Web 技术的发展,现代网站 URL 结构日益复杂,包含路径参数、查询参数、锚点等多种组件,且存在相对路径、URL 编码等问题,给爬虫开发带来了挑战…...
解锁FastAPI与MongoDB聚合管道的性能奥秘
title: 解锁FastAPI与MongoDB聚合管道的性能奥秘 date: 2025/05/20 20:24:47 updated: 2025/05/20 20:24:47 author: cmdragon excerpt: MongoDB聚合管道是一种分阶段处理数据的流水线,通过$match、$group等阶段对文档进行特定操作,具有内存优化和原生操…...
软件工程方法论:在确定性与不确定性的永恒之舞中寻找平衡
更多精彩请访问:通义灵码2.5——基于编程智能体开发Wiki多功能搜索引擎-CSDN博客 当我们谈论“软件工程”时,“工程”二字总暗示着某种如桥梁建造般的精确与可控。然而,软件的本质却根植于人类思维的复杂性与需求的流变之中。软件工程方法论的…...
Unity中的MonoSingleton<T>与Singleton<T>
1.MonoSingleton 代码部分 using UnityEngine;/// <summary> /// MonoBehaviour单例基类 /// 需要挂载到GameObject上使用 /// </summary> public class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T> {private static T _instance;…...
怎么通过 jvmti 去 hook java 层函数
使用 JVMTI 手动实现 Android Java 函数 Hook 要通过 JVMTI 手动实现 Android Java 函数 Hook,需要编写 Native 层代码并注入到目标进程中。以下是详细步骤和示例: 一、核心实现原理 JVMTI 提供两种主要 Hook 方式: Method Entry/Exit 事…...

兰亭妙微 | 医疗软件的界面设计能有多专业?
从医疗影像系统到手术机器人控制界面,从便携式病原体检测设备到多平台协同操作系统,兰亭妙微为众多医疗设备研发企业,打造了兼具专业性与可用性的交互界面方案。 我们不仅做设计,更深入理解医疗场景的实际需求: 对精…...

前端原生构建交互式进度步骤组件(Progress Steps)
在现代网页设计中,进度步骤(Progress Steps) 是一种常见的 UI 模式,常用于引导用户完成注册流程、多步表单、教程或任何需要分步骤操作的场景。本文将带你从零开始构建一个美观且功能完整的 “进度步骤”组件,并详细讲…...
如何给windos11 扩大C盘容量
动不动C盘就慢了,苹果逼着用户换手机,三天两头更新系统,微软也是毫不手软。c盘 从10个G就够用,到100G 也不够,看来通货膨胀是部分行业的。 在 Windows 11 中扩大 C 盘容量,主要取决于磁盘分区布局和可用空…...

【基于阿里云搭建数据仓库(离线)】Data Studio创建资源与函数
Data Studio支持在您的数据分析代码中引用自定义的资源和函数(支持MaxCompute、EMR、CDH、Flink),您需要先创建或上传资源、函数至目标工作空间,上传后才可在该工作空间的任务中使用。您可参考本文了解如何使用DataWorks可视化方式…...
Linux_T(Sticky Bit)粘滞位详解
Linux 粘滞位(Sticky Bit)详解 一、什么是粘滞位(Sticky Bit) 粘滞位(Sticky Bit)是 Linux 和 Unix 系统中一种特殊的权限设置,主要应用于目录,其作用是在多人共享访问的目录中&am…...

web3-以太坊智能合约基础(理解智能合约Solidity)
以太坊智能合约基础(理解智能合约/Solidity) 无需编程经验,也可以帮助你了解Solidity独特的部分;如果本身就有相应的编程经验如java,python等那么学起来也会非常的轻松 一、Solidity和EVM字节码 实际上以太坊链上储存…...
高敏感应用如何保护自身不被逆向?iOS 安全加固策略与工具组合实战(含 Ipa Guard 等)
如果你正在开发一款涉及支付、隐私数据或企业内部使用的 App,那么你可能比多数开发者更早意识到一件事——App 一旦被破解,损失的不只是代码,还有信任与业务逻辑。 在我们为金融类工具、HR 系统 App、数据同步组件等高敏感项目提供支持的过程…...