uniapp下載打開實現方案,支持安卓ios和h5,下載文件到指定目錄,安卓文件管理內可查看到

uniapp下載&打開實現方案,支持安卓ios和h5

Android:
1、申請本地存儲讀寫權限
2、創建文件夾(文件夾不存在即創建)
3、下載文件

ios:
1、下載文件
2、保存到本地,需要打開文件點擊儲存

使用方法:

downloadFile(fileUrl, fileName)

file.js

let downloadFilePath = '/storage/emulated/0/yulong-ys-files'
// 創建文件夾
export const createDir = () => {return new Promise((resolve, reject) => {// 申請本地存儲讀寫權限plus.android.requestPermissions(['android.permission.WRITE_EXTERNAL_STORAGE','android.permission.READ_EXTERNAL_STORAGE','android.permission.INTERNET','android.permission.ACCESS_WIFI_STATE'], success => {const File = plus.android.importClass('java.io.File')let file = new File(downloadFilePath)// 文件夾不存在即創建if (!file.exists()) {file.mkdirs()resolve()}resolve()}, error => {Tips.toast('無法獲取權限,文件下載將出錯')reject(error)})})}// 下載文件操作
async function doDownloadFile(url, fileName, options, osName) {if (osName === 'Android') {await createDir()}Tips.loading('正在下載...')let dTask = plus.downloader.createDownload(url, options, async (d, status) => {Tips.hideLoading()if (status == 200) {plus.io.convertLocalFileSystemURL(d.filename)await Tips.confirm('文件已保存,是否打開?')uni.openDocument({filePath: d.filename,success: () => {console.log('成功打開')}})} else {console.log('下載失敗')console.log(d)Tips.toast('下載失敗')Tips.hideLoading()plus.downloader.clear()}})dTask.start()
}// 下載文件
export function downloadFile(url, fileName) {if (!url) {Tips.toast('下載地址不能為空')return Promise.reject('下載地址不能為空')}// #ifdef H5window.location.href = url// #endif// #ifdef APP-PLUSlet osName = plus.os.name;if (osName === 'Android') {doDownloadFile(url, fileName, {filename: 'file://' + downloadFilePath + '/' + fileName}, osName)} else {doDownloadFile(url, fileName, {}, osName)}// #endif
}

Tips.js

/*** 提示與加載工具類*/
export default class Tips {constructor() {this.isLoading = false;}/*** 彈出提示框*/static success(title, duration = 1000) {setTimeout(() => {uni.showToast({title: title,icon: "success",mask: true,duration: duration});}, 300);if (duration > 0) {return new Promise((resolve, reject) => {setTimeout(() => {resolve();}, duration);});}}/*** 彈出確認窗口*/static confirm(content, ops = {}, payload = {}) {return new Promise((resolve, reject) => {uni.$showModal({content: content,...ops,success: res => {if (res.confirm) {resolve(payload);} else if (res.cancel) {reject(payload);}},fail: res => {reject(payload);}});});}static toast(title, onHide = undefined, icon = "none") {setTimeout(() => {uni.showToast({title: title,icon: icon,mask: true,duration:1500});}, 0);// 隱藏結束回調if (onHide) {setTimeout(() => {onHide();}, 1500);}}/*** 錯誤框*/static error(title, onHide) {uni.showToast({title: title,icon: 'error',mask: true,duration: 1500});// 隱藏結束回調if (onHide) {setTimeout(() => {onHide();}, 1500);}}/*** 彈出加載提示*/static loading(title = "加載中") {if (Tips.isLoading) {return;}Tips.isLoading = true;uni.showLoading({title: title,mask: true});}/*** 加載完畢*/static hideLoading() {if (Tips.isLoading) {Tips.isLoading = false;uni.hideLoading();}}
}/*** 靜態變量,是否加載中*/
Tips.isLoading = false;

參考博客,在次基礎上做了修改

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64326.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64326.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64326.shtml

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

相關文章

77、將adaface的mtcnn模型npy文件轉成atlas310p模型,并進行推理

基本思想:將adaface的mtcnn模型npy文件轉成atlas310p模型進行推理。同時比對結果 ubuntu@ubuntu:~$ git clone https://github.com/mk-minchul/AdaFace.git Cloning into AdaFace... remote: Enumerating objects: 236, done. remote: Counting objects: 100% (109/109), don…

Spark SQL DML語句

【圖書介紹】《Spark SQL大數據分析快速上手》-CSDN博客 《Spark SQL大數據分析快速上手》【摘要 書評 試讀】- 京東圖書 Spark本地模式安裝_spark3.2.2本地模式安裝-CSDN博客 DML(Data Manipulation Language,數據操作語言)操作主要用來對…

農歷節日倒計時:基于Python的公歷與農歷日期轉換及節日查詢小程序

農歷節日倒計時:基于Python的公歷與農歷日期轉換及節日查詢小程序 摘要 又是一年春節即將到來,突然想基于Python編寫一個農歷節日的倒計時小程序。該程序能夠根據用戶輸入的農歷節日名稱,計算出距離該節日還有多少天。通過使用lunardate庫進…

線性直流電流

電阻網絡的等效 等效是指被化簡的電阻網絡與等效電阻具有相同的 u-i 關系 (即端口方程),從而用等效電阻代替電阻網絡之后,不 改變其余部分的電壓和電流。 串聯等效: 并聯等效: 星角變換 若這兩個三端網絡是等效的,從任…

CDN(Content Delivery Network,內容分發網絡)

CDN(Content Delivery Network,內容分發網絡)是一種通過在網絡中部署分布式的服務器集群,將網站內容分發到最接近用戶的服務器節點,以提高用戶訪問速度和穩定性的重要網絡基礎設施。CDN的核心思想是讓用戶就近獲取所需…

B站推薦模型數據流的一致性架構

01 背景 推薦系統的模型,通過學習用戶歷史行為來達到個性化精準推薦的目的,因此模型訓練依賴的樣本數據,需要包括用戶特征、服務端推薦的視頻特征,以及用戶在推薦視頻上是否有一系列的消費行為。 推薦模型數據流,即為…

【LeetCode】839、相似字符串組

【LeetCode】839、相似字符串組 文章目錄 一、并查集1.1 并查集 二、多語言解法 一、并查集 1.1 并查集 求共有幾組, 聯想到并查集, 即并查集有幾個集合 字符串相似: 相差0個字符, 或2個字符 其中所有字符串長度都相同, 是比較方便處理的 // go var sets int var father […

你不需要對其他成年人的情緒負責

在這個紛繁復雜的世界里,每個人都是獨一無二的個體,背負著各自的故事、夢想與煩惱。在人際交往的廣闊舞臺上,我們時常會遇到這樣的情境:朋友、同事、家人,甚至是陌生人,他們的情緒似乎總能不經意間影響到我…

官宣!低空經濟司,掛牌成立!

近日,國家發展改革委網站“機關司局”欄目悄然更新,一個新設立的部門——低空經濟發展司(簡稱“低空司”)正式進入公眾視野。低空司的成立,無疑是對當前國家經濟發展形勢的深刻把握和前瞻布局。 低空經濟是以各類低空飛…

接口調用限頻(代理模式+滑動窗口)

目錄 代碼示例 接口 代理 接口實現 限流工廠 限流處理器接口 直接交換處理器 限流處理器 限流配置 滑動窗口限流 通過代理模式滑動窗口,限流請求第三方平臺,避免出現第三方平臺拋出限流異常,影響正常業務流程,從出口出發…

不安全物聯網的輕量級加密:綜述

Abstract 本文綜述了針對物聯網(IoT)的輕量級加密解決方案。這項綜述全面覆蓋了從輕量級加密方案到不同類型分組密碼的比較等多個方面。同時,還對硬件與軟件解決方案之間的比較進行了討論,并分析了當前最受信賴且研究最深入的分組…

【小程序】全局數據共享

目錄 全局數據共享 1. 什么是全局數據共享 2. 小程序中的全局數據共享方案 全局數據共享 - MobX 1. 安裝 MobX 相關的包 2. 創建 MobX 的 Store 實例 3. 將 Store 中的成員綁定到頁面中 4. 在頁面上使用 Store 中的成員 ?5. 將 Store 中的成員綁定到組件中 6. 在組件中…

自動化測試- 自動化測試模型

目錄 自動化測試模型簡介 1、線性模型 舉例 測試頁面html文件 測試腳本 2. 關鍵字驅動測試(Keyword-Driven Testing) 需測試內容 關鍵字驅動測試框架 創建測試用例文件 運行測試 3. 數據驅動測試(Data-Driven Testing) …

【GlobalMapper精品教程】091:根據指定字段融合圖斑(字段值相同融合到一起)

文章目錄 一、加載數據二、符號化三、融合圖斑1. 根據圖斑位置進行融合2. 根據指定字段四、注意事項一、加載數據 訂閱專欄后,從私信中查收配套實驗數據包,找到data091.rar,解壓并加載,如下圖所示: 屬性表如下: 二、符號化 為了便于比對不同的融合結果,查看屬性表根據…

JavaScript 實現動態產品展示網頁

JavaScript 實現動態產品展示網頁 1. HTML 頁面結構2. CSS 樣式設計3. JavaScript 實現功能功能總結 本文設計了一個基于 JavaScript 的動態產品展示網頁案例,核心功能包括: 動態產品分類過濾:通過點擊分類按鈕,僅顯示屬于該分類…

網絡爬蟲科普:原理、類型、策略與常用工具

網絡爬蟲科普:原理、類型、策略與常用工具 網絡爬蟲在當今互聯網時代扮演著極為重要的角色,它能幫助我們從海量的網絡信息中提取出有價值的數據。以下將從網絡爬蟲的基本概念、工作流程、類型、搜索策略以及常用工具等方面進行詳細科普介紹。 一、網絡…

strace工具使用

下載地址: https://github.com/strace/strace/releases/tag/v6.12 解壓后執行以下命令 ./configure --hostarm-linux --prefix/home/wei/Code/strace/strace-6.12/out CC/home/wei/Code/firmware/prebuilts/host/gcc/gcc-arm-10.2-2020.11-x86_64-arm-none-linux…

圖像處理-Ch2-空間域的圖像增強

Ch2 空間域的圖像增強 文章目錄 Ch2 空間域的圖像增強Background灰度變換函數(Gray-level Transformation)對數變換(Logarithmic)冪律變換(Power-Law)分段線性變換函數(Piecewise-Linear)對比度拉伸(Contrast-Stretching)灰度級分層(Gray-level Slicing) 直方圖處理(Histogram …

Linux | Ubuntu零基礎安裝學習cURL文件傳輸工具

目錄 介紹 檢查安裝包 下載安裝 手冊 介紹 ?cURL是一個利用URL語法在命令行下工作的文件傳輸工具,首次發行于1997年??12。cURL支持多種協議,包括FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3…

cesium通過經緯度獲取3dtiles 得feature信息

找到這里3dtiles的兩種訪問方式: 1.1 3DTileContent#getFeature 這里涉及3DTile 數據結構,暫不了解3DTile 數據結構,因此暫不使用。 1.2 scene.pick 本次使用 scene表示虛擬場景中所有 3D 圖形對象和狀態的容器;scene中…