『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.pswp.cn/diannao/85613.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85613.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85613.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

攻防世界-unseping

進入環境 在獲得的場景中發現PHP代碼并進行分析 編寫PHP編碼 得到 Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czozOiJwd2QiO319 將其傳入 想執行ls&#xff0c;但是發現被過濾掉了 使用環境變量進行繞過 $a new…

IP查詢與網絡風險的關系

網絡風險場景與IP查詢的關聯 網絡攻擊、惡意行為、數據泄露等風險事件頻發&#xff0c;而IP地址作為網絡設備的唯一標識&#xff0c;承載著關鍵線索。例如&#xff0c;在DDoS惡意行為中&#xff0c;攻擊者利用大量IP地址發起流量洪泛&#xff1b;惡意行為通過變換IP地址繞過封…

pikachu通關教程-XSS

XSS XSS漏洞原理 XSS被稱為跨站腳本攻擊&#xff08;Cross Site Scripting&#xff09;&#xff0c;由于和層疊樣式表&#xff08;Cascading Style Sheets&#xff0c;CSS&#xff09;重名&#xff0c;改為XSS。主要基于JavaScript語言進行惡意攻擊&#xff0c;因為js非常靈活…

【時時三省】(C語言基礎)數組作為函數參數

山不在高&#xff0c;有仙則名。水不在深&#xff0c;有龍則靈。 ----CSDN 時時三省 調用有參函數時&#xff0c;需要提供實參。例如sin ( x )&#xff0c;sqrt ( 2&#xff0c;0 )&#xff0c;max ( a&#xff0c;b )等。實參可以是常量、變量或表達式。數組元素的作用與變量…

硬件工程師筆記——555定時器應用Multisim電路仿真實驗匯總

目錄 一 555定時器基礎知識 二、引腳功能 三、工作模式 1. 單穩態模式&#xff1a; 2. 雙穩態模式&#xff08;需要外部電路輔助&#xff09;&#xff1a; 3. 無穩態模式&#xff08;多諧振蕩器&#xff09;&#xff1a; 4. 可控脈沖寬度調制&#xff08;PWM&#xff09…

C++11特性:enum class(強枚舉類型)詳解

C11引入的 enum class&#xff08;強枚舉類型&#xff09;解決了傳統枚舉的多個問題&#xff1a; 防止枚舉值泄漏到外部作用域&#xff1b;禁止不同枚舉間的隱式轉換&#xff1b;允許指定底層數據類型優化內存&#xff1b;避免命名空間污染。 其基本語法為 enum class Name{.…

【QT】QString 與QString區別

在C中&#xff0c;QString 和 QString& 有本質區別&#xff0c;尤其是在參數傳遞和內存管理方面&#xff1a; 1. QString&#xff08;按值傳遞&#xff09; 創建副本&#xff1a;傳遞時會創建完整的字符串副本內存開銷&#xff1a;可能涉及深拷貝&#xff08;特別是大字符…

提升四級閱讀速度方法

以下是針對四級英語閱讀速度提升的系統性解決方案&#xff0c;結合最新考試規律和高效訓練方法&#xff0c;分五個核心模塊整理&#xff1a; &#x1f680; ??一、基礎提速訓練&#xff08;消除生理障礙&#xff09;?? ??擴大視幅范圍?? 從逐詞閱讀升級為 ??意群閱讀…

6.4 note

構造矩陣 class Solution { private: vector<int> empty {}; // 返回每個數字(-1)所在的序號&#xff0c;可以是行或列, 如果為空則無效 vector<int> topoSort(int k, vector<vector<int>>& conditions) { // 構建一個圖…

SCSS 全面深度解析

一、SCSS 入門指南&#xff1a;為你的 CSS 工作流注入超能力 在現代 Web 開發中&#xff0c;樣式表的復雜性和維護成本日益增加。為了應對這一挑戰&#xff0c;CSS 預處理器應運而生&#xff0c;而 SCSS (Sassy CSS) 正是其中最流行、最強大的工具之一。本指南將帶你深入了解 …

R1-Searcher++新突破!強化學習如何賦能大模型動態知識獲取?

R1-Searcher新突破&#xff01;強化學習如何賦能大模型動態知識獲取&#xff1f; 大語言模型&#xff08;LLM&#xff09;雖強大卻易因靜態知識產生幻覺&#xff0c;檢索增強生成&#xff08;RAG&#xff09;技術成破局關鍵。本文將解讀R1-Searcher框架&#xff0c;看其如何通…

圖神經網絡原理及應用簡介

圖神經網絡&#xff08;Graph Neural Networks, GNNs&#xff09;原理及應用 1. 圖神經網絡的基本概念 圖神經網絡是一種專門用于處理圖結構數據的深度學習模型。圖&#xff08;Graph&#xff09;由節點&#xff08;Node&#xff09;和邊&#xff08;Edge&#xff09;組成&…

Unity 限制物體在Bounds 包圍盒控制移動

我列舉兩種方式&#xff0c;其實最終都是涉及到包圍盒使用問題。可以通過 Box Collider 的 bounds 屬性來獲取物體的包圍盒&#xff08;Bounds&#xff09;也可以直接設置Bounds包圍盒使用&#xff0c;從而限制其移動范圍。不過需要注意&#xff0c;直接使用 Box Collider 的 s…

SpringBoot中緩存@Cacheable出錯

SpringBoot中使用Cacheable: 錯誤代碼&#xff1a; Cacheable(value "FrontAdvertiseVOList", keyGenerator "cacheKey") Override public List<FrontAdvertiseVO> getFrontAdvertiseVOList(Integer count) {return this.list(Wrappers.<Adve…

位集合(STL bitset)簡介

【bitset 官方網址】 https://cplusplus.com/reference/bitset/bitset/ 位集合&#xff08;Bit Set&#xff09;是一種高效存儲和操作布爾值&#xff08;true/false&#xff09;或二進制位&#xff08;0/1&#xff09;的數據結構&#xff0c;主要用于處理大規模整數集合或狀態標…

基于SDN環境下的DDoS異常攻擊的檢測與緩解

參考以下兩篇博客&#xff0c;最后成功&#xff1a; 基于SDN的DDoS攻擊檢測和防御方法_基于sdn的ddos攻擊檢測與防御-CSDN博客 利用mininet模擬SDN架構并進行DDoS攻擊與防御模擬&#xff08;Ryumininetsflowpostman&#xff09;_mininet模擬dos攻擊-CSDN博客 需求 H2 模擬f…

責任鏈模式:構建靈活可擴展的請求處理體系(Java 實現詳解)

一、責任鏈模式核心概念解析 &#xff08;一&#xff09;模式定義與本質 責任鏈模式&#xff08;Chain of Responsibility Pattern&#xff09;是一種行為型設計模式&#xff0c;其核心思想是將多個處理者對象連成一條鏈&#xff0c;并沿著這條鏈傳遞請求&#xff0c;直到有某…

如何進行頁面前端監控

&#x1f9d1;?&#x1f4bb; 寫在開頭 點贊 收藏 學會&#x1f923;&#x1f923;&#x1f923; 前端監控主要分三個方向 前端性能&#xff08;用戶體驗優化&#xff09; 異常監控 業務指標跟 下面我來分別介紹三類指標如何獲取 1&#xff09;前端性能指標&#xff1a; …

Ajax技術分析方法全解:從基礎到企業級實踐(2025最新版)

引言 Ajax技術自2005年正式命名以來,已支撐全球83%的Web應用實現異步交互。2025年最新數據顯示,單頁面應用(SPA)的Ajax請求密度已達日均120億次/應用。本文將系統化解析Ajax分析方法論,涵蓋從基礎原理到企業級工程實踐的完整技術棧。 一、Ajax技術架構解構 1.1 核心組件…

git管理github上的repository

1. 首先注冊github并創建一個倉庫&#xff0c;這個很簡單&#xff0c;網上教程也很多&#xff0c;就不展開說了 2. 安裝git&#xff0c;這個也很簡單&#xff0c;不過這里有個問題就是你當前windows的用戶名即&#xff1a;C/Users/xxx 這個路徑不要有中文&#xff0c;因為git …