当前位置: 首页 > news >正文

『uniapp』把接口的内容下载为txt本地保存 / 读取本地保存的txt文件内容(详细图文注释)

目录

    • 预览效果
    • 思路分析
      • downloadTxt 方法
      • readTxt 方法
    • 完整代码
    • 总结


欢迎关注 『uniapp』 专栏,持续更新中
欢迎关注 『uniapp』 专栏,持续更新中

预览效果

在这里插入图片描述

思路分析

downloadTxt 方法

该方法主要完成两个任务:

  • 下载 txt 文件:通过 uni.downloadFile 方法从指定的 URL 下载文件,返回的是临时文件路径。
  • 保存文件:使用 uni.saveFile 将临时文件保存到本地。
  • 读取文件:文件保存完成后,调用 plus.io API 读取文件内容,并将其转换为 JSON 格式存储到 resultData 中。

步骤:

  1. 通过 uni.downloadFile 下载文件。
  2. 使用 uni.saveFile 保存文件并获取本地路径。
  3. 使用 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』 专栏,持续更新中
『未完待续』


http://www.lqws.cn/news/105877.html

相关文章:

  • WPS word 已有多级列表序号
  • 免费批量文件重命名软件
  • AI健康小屋+微高压氧舱:科技如何重构我们的健康防线?
  • KITTI数据集(计算机视觉和自动驾驶领域)
  • mobilnet v4 部署笔记
  • go语言基础|slice入门
  • C语言学习—数据类型20250603
  • 2025.6.3总结
  • Jpom:Java开发者的一站式自动化运维平台详解
  • Java编程之建造者模式
  • 深度学习入门Day2--鱼书学习(1)
  • 【Typst】4.导入、包含和读取
  • Spring AI Alibaba + Nacos 动态 MCP Server 代理方案
  • Playwright定位器详解:自动化测试的核心工具
  • 集合类基础概念
  • 2023年12月四级真题作文的分析总结
  • 704. 二分查找 (力扣)
  • 十五、【测试执行篇】异步与并发:使用 Celery 实现测试任务的后台执行与结果回调
  • GaLore:基于梯度低秩投影的大语言模型高效训练方法详解一
  • JSCH使用SFTP详细教程
  • Hadoop复习(九)
  • Linux 与 Windows:哪个操作系统适合你?
  • javascript 实战案例 二级联动下拉选框
  • godwork_ AT 5.2 摄影测量空三数据处理软件。
  • 星敏感器:卫星姿态测量的“星空导航仪”
  • 关系型数据库通过sql语句实现悲观锁与乐观锁
  • Golang 依赖注入:构建松耦合架构的关键技术
  • 原始数据去哪找?分享15个免费官方网站
  • 用AI(Deepseek)做了配色网站-功能介绍【欢迎体验】
  • 力扣HOT100之多维动态规划:1143. 最长公共子序列