首页 > 其他分享 >uniapp——App 监听下载文件状态,打开文件(三)

uniapp——App 监听下载文件状态,打开文件(三)

时间:2025-01-21 09:31:25浏览次数:3  
标签:status 文件 console uniapp App dtask download 监听 下载

5+ 实现下载文件并打开

这里演示,导出Excel 表格

文章目录


相关Api:
downloader


DEMO

提示:

  • 请求方式支持:GET、POST;POST 方式需要设置Content-Type
  • 暂停下载任务: dtask.pause();
  • 取消下载任务:dtask.abort();
  • 监听下载文件:实时状态,根据个人所需可以在页面上添加进度条等UI效果;

h5PlusDownloadFile() {
    let header = {
        token: getToken(),
        'Content-Type': 'application/json' // 设置 POST 请求提交的数据类型为JSON字符串
    }
	
	// 下载任务的参数
    let options = {
        method: 'POST',
        filename: `_doc/test_${new Date().getTime()}.xlsx` // 支持以"_downloads/"、"_doc/"、"_documents/"开头
    }
    
    // 创建下载任务
    let url = 'https://xxx/export';
    var dtask =	plus.downloader.createDownload(url, options, (d, status) => {
        console.log('下载完成', d, status);
        if(status == 200){ 
            console.log("Download success: " + d.filename);
            uni.showToast({
                title: '下载成功'
            })
            
            // 打开指定的文件
            plus.runtime.openFile(options.filename);
        } else {
            console.log("Download failed: " + status); 
            uni.showToast({
                title: '下载失败',
                icon: 'error'
            })
            plus.downloader.clear(); // 清除下载任务
        }  
    })

    // 设置下载请求头数据
    Object.keys(header).forEach((key) => {
        dtask.setRequestHeader(key, header[key]);
    })

    // 监听下载任务状态,根据个人所需 实现进度条等
    dtask.addEventListener("statechanged", this.onStateChanged, false);

    // 开始下载
    dtask.start();
},
onStateChanged(download, status) {
    // Download对象管理一个下载任务
    console.log('监听下载状态--->文件的总大小/已完成下载文件的大小:', download.totalSize, download.downloadedSize);
    
    if(download.state == 4 && status == 200){
        // 下载完成 
        console.log("onStateChanged Download success: " + download.getFileName());  
    }  
},

监听下载进度效果图

  • 截取后面部分效果图
    在这里插入图片描述

为什么 totalSize 一直为0?

  • 下载任务开始传输数据时更新,在此之前其值为0。 此值是从HTTP协议的Content-Length中获取,如果服务器未返回Content-Length数据则此值始终为0;

标签:status,文件,console,uniapp,App,dtask,download,监听,下载
From: https://blog.csdn.net/Smile_ping/article/details/144854120

相关文章

  • golang 多线程 备份文件夹到兄弟层级 wail group
    golang多线程备份文件夹到兄弟层级wailgroupD:\GolangTools\src\config\config.gopackageconfigtypeConfigHandlerstruct{ includeDirNames[]string includeFileNames[]string excludeDirNames[]string excludeFileNames[]string}funcNewConfigHandler......
  • Arduino 平台下 ESP32-P4 驱动ES8311实现 MP3音频文件播放-方式2
    arduino平台下ESP32-P4开发板驱动ES8311,从SD_MMC读取MP3文件播实验程序,方式2。这个测试程序与之前的有所不同,直接使用了arduino-audio-drivers库中的ES8311驱动文件。采用arduino-audio-drivers比单独使用ES8311驱动来的更好,毕竟这个库支持ES8388,ES8311等多种芯片,程序......
  • 一文告诉你Linux下如何用C语言实现ini配置文件的解析和保存
    嵌入式项目开发中,会有很多功能模块需要频繁修改参数,Linux下我们可以通过ini格式的文件保存配置信息。本文通过开源库iniparser,详细讲解如何用C语言实现ini文件的参数解析和配置保存。本文代码实例获取方式见文末。一、ini文件1什么是ini文件INI(InitializationFile)文件是......
  • 电脑端利用Winrar软件批量解压加密文件
    最近在下载资源的时候发现,出现了使用同一压缩密码加密的一系列压缩包(这里只放了一部分,实际上有100多个……)想要使用电脑自带的Winrar软件解压缩变得非常困难,于是在网上查找了一下,有帖子说可以在winrar中选中所有文件以后,用鼠标右键可以输入一个统一密码?但是在实际操作中,并......
  • 「免填邀请码」赋能各类APP,提升转化率与用户体验
    在当前移动互联网的高速发展下,用户获取和留存已成为各类APP成功的关键。传统的注册流程虽然能够有效识别用户来源并进行用户管理,但随着市场竞争的激烈,复杂的注册和绑定步骤往往会成为用户流失的瓶颈。免填邀请码技术,结合自研的归因模型算法和先进SDK,能够大幅简化用户的注册流程......
  • Spring Boot + Apache POI 实现 Excel 导出:BOM物料清单生成器(支持中文文件名、样式美
    目录引言ApachePOI操作Excel的实用技巧1.合并单元格操作2.设置单元格样式1.创建样式对象2.设置边框3.设置底色4.设置对齐方式5.设置字体样式6.设置自动换行7.应用样式到单元格3.定位和操作指定单元格4.实现标签-值的形式5.列宽设置1.设置单个列宽2.......
  • (2024最新毕设合集)基于SpringBoot的游乐园管理系统-69394|可做计算机毕业设计JAVA、PHP
    目录1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.1.1经济可行性2.1.2技术可行性2.1.3操作可行性2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4添加信息流程2.2.5......
  • HTML5如何唤醒APP?
    在前端开发中,HTML5本身并不直接提供“唤醒APP”的功能。但是,你可以使用一些技术或策略来实现类似的效果,具体取决于你的需求和目标平台(如iOS、Android等)。以下是一些常见的方法:使用URLScheme:许多APP都支持自定义的URLScheme,这允许你通过特定的URL格式来打开或唤醒APP。例如......
  • K8s中Java应用OOM崩溃?一招搞定Dump文件抓取与告警!
    背景:公司新项目在进行容器化工作,有开发提出他们的java应用存在OOM的情况,通过配置参数-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/dumps/oom可以将jvm信息dump下来,但是在K8s中出现OOM会直接重启容器,无法查看/获取dump文件。并且dump的文件通常比较大(开发估计2G左......
  • Linux基础操作(03)文件操作
    文件操作指令cat/more/less/head/tailcat:查看文件的内容执行权限:所有用户语法:cat[选项]文件选项:-n:显示文件行号范例:cat/pron/cpuinfocat-n/pron/cupinfomore:分页查看文件内容执行权限:所有用户语法:more文件/文件路径操作:空格键:向下翻动......