一、插件简介

zhimi-downloadManager(智密 - 多任务下载管理插件)是一个支持多任务多并发下载,支持多/单任务管理,并且实时反馈任务下载进度的uniapp原生插件。
平台支持:Android、IOS


二、效果预览
在App端测试效果如下:

体验DEMO(安卓浏览器扫码下载)


三、开始使用

(1): 引入插件

首先创建工程,添加完原生插件之后,需要引入插件

var downloadManager = uni.requireNativePlugin('zhimi-downloadManager')

具体的API在插件市场的API文档中可以查阅,有定制需求或bug提交的也可以自行联系客服微信(zhimitec)

(2): 监听任务

创建任务之前,我们需要全局监听任务进度变化回调

downloadManager.onDownloadChangCallback(downloadTask => {
  // 下载地址: downloadTask.url
  // 文件大小: downloadTask.expectedSize
  // 已下大小: downloadTask.receivedSize
  // 下载速度: downloadTask.speed
  // 下载状态: downloadTask.state 0默认 1等待 2下载中 3暂停 4下载完成 5下载错误
  // 保存路径: downloadTask.filePath
  // 文件名: downloadTask.filename
  console.log(downloadTask.url + ' has been change')
})

(3): 创建任务

对于 zhimi-downloadManager 来说,下载任务仅仅需要1个下载路径,如果你需要自定义文件名,传入fileName即可。
假设我们需要下载QQ的安装包:https://dldir1.qq.com/qqfile/QQforMac/QQ_6.7.0.dmg,只需要这样的一段代码即可

// 这里的fileName可传可不传
downloadManager.downloadData({ url: 'https://dldir1.qq.com/qqfile/QQforMac/QQ_6.7.0.dmg', fileName: 'macqq.dmg' })

仅仅一个方法,zhimi-downloadManager就会自动记录任务列表,开始下载任务,并且通过上面监听的回调返回任务下载进度

(4): 刷新任务列表

下载的功能实现了,这时候我们还需要回显给用户当前任务列表,在zhimi-downloadManager中,这一切变得非常简单,只需要调用以下代码即可直接返回任务列表(包括下载状态、进度等)

downloadManager.allDownloadsCallback(({ urls }) => {
  urls = [{
    receivedSize // 进度
    expectedSize // 大小
    speed // 速度
    targetURL // 地址
    state // 下载状态 0默认 1等待 2下载中 3暂停 4下载完成 5下载错误
    url // 下载地址
    filePath // 保存地址
    filename // 文件名
  }]
})

(5): 更多方法
对于所有任务的操作以及单个任务的操作,zhimi-downloadManager都提供对应的api,在此仅做列举,具体使用方法参考插件市场内api文档说明https://ext.dcloud.net.cn/plugin?id=2877,有定制需求或bug提交的也可以自行联系客服微信(zhimitec)。

downloadManager.setDownloadingMaxNum // 设置任务并发数
downloadManager.startAllDownloads // 开始所有任务
downloadManager.cancelAllDownloads // 暂停所有任务
downloadManager.removeAllData // 删除所有任务
downloadManager.downloadData // 创建新的下载任务
downloadManager.downloadData // 开始单个任务
downloadManager.cancelData // 暂停单个任务
downloadManager.removeData // 暂停单个任务

vue+uniapp实现多任务并发下载文件 | 断点续下, 任务列表, 多任务并发限制的更多相关文章

  1. python下载mp4 同步和异步下载支持断点续下

    Range 用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式: Range:(unit=first byte pos)-[last byte pos] Range 头部的格式有以下几种 ...

  2. 使用LoadRunner脚本并发下载文件,出现19890错误

    需求:10个客户并发下载同一份zip文件.执行的时候,8个Fail了,只下载了两份zip,且无论执行多少遍,都是这样. 错误信息如下:message code:-19890C interpreter ...

  3. ajax请求过程中下载文件在火狐下的兼容问题

    项目中碰到的问题,记录如下. 需求很简单,点击一个文件链接下载该文件,同时向后台发送请求.需求很常见,用户点击下载后通常要进行下载量的统计,统计的话可以利用 script标签 或者 img标签(图片p ...

  4. java下载文件指定目录下的文件

    方法一: @RequestMapping('download')def download(HttpServletRequest request, HttpServletResponse respons ...

  5. php下载文件夹目录下的文件

    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

  6. 用wget下载文件

    wget使用文档:https://www.gnu.org/software/wget/manual/wget.html 最开始常用的比如: wget -O  /e/movie.mp4 http://w ...

  7. 转:Windows下用sftp自动下载文件

    远程服务器是Linux操作系统,没有ftp服务,可以ssh,数据库每天2:00会自动创建一个备份文件,本地计算机是windows操作系统,希望用sftp每天3:00下载远程服务器上的备份文件.本地系统 ...

  8. 二、Delphi10.3在不下载文件情况下读取网站文件大小等信息

    一.上源码 uses TxHttp, Classes, TxCommon, Frm_WebTool, SysUtils; var m_Url: string; m_Http: TTxHttp; m_P ...

  9. Linux下不借助工具实现远程linux服务器上传下载文件

    # Linux下不借助工具实现远程linux服务器上传下载文件 ## 简介 - Linux下自带ssh工具,可以实现远程Linux服务器的功能- Linux下自带scp工具,可以实现文件传输功能 ## ...

随机推荐

  1. idea Error: java: OutOfMemoryError: insufficient memory 的处理

    idea Error: java: OutOfMemoryError: insufficient memory处理 在更新项目代码或者运行项目时报错 OutOfMemoryError: insuffi ...

  2. 【BZOJ 4668 冷战】

    题目: [BZOJ 4668 冷战] 思路: 因为考虑强制在线,我们是肯定要维护形状的 我们发现如果\((u,v)\)这条边如果\(u,v\)已经连上,那么对于最终答案这条边是没有贡献的 所以我们发现 ...

  3. Codeforces 526G - Spiders Evil Plan(长链剖分+直径+找性质)

    Codeforces 题目传送门 & 洛谷题目传送门 %%%%% 这题也太神了吧 storz 57072 %%%%% 首先容易注意到我们选择的这 \(y\) 条路径的端点一定是叶子节点,否则我 ...

  4. Codeforces 590E - Birthday(AC 自动机+Dilworth 定理+二分图匹配)

    题面传送门 AC 自动机有时只是辅助建图的工具,真的 首先看到多串问题,果断建出 AC 自动机.设 \(m=\sum|s_i|\). 不难发现子串的包含关系构成了一个偏序集,于是我们考虑转化为图论,若 ...

  5. Shell 变量嵌套

    实现:eval 1 a="indv1" 2 indv1="Sus1" 3 4 eval tmp='$'$a 5 echo $tmp //这里 echo 返回值为 ...

  6. .Net Core——用SignalR撸个游戏

    之前开内部培训,说到实时web应用这一块讲到了SignalR,我说找时间用它做个游戏玩玩,后面时间紧张就一直没安排.这两天闲了又想起这个事,考虑后决定用2天时间写个斗D主,安排了前端同学写客户端,我写 ...

  7. Hadoop入门 常见错误及解决方案

    常见错误及解决方案 目录 常见错误及解决方案 ResourceManager连接失败 root用户和ranan用户两个用户启动集群不统一 不识别主机名 DataNode和NameNode进程同时只能工 ...

  8. day11 序列化组件、批量出入、自定义分页器

    day11 序列化组件.批量出入.自定义分页器 今日内容详细 ajax实现删除二次提醒(普通版本) ajax结合第三方插件sweetalert实现二次提醒(样式好看些) ajax如何发送文件数据 aj ...

  9. Spark(八)【广播变量和累加器】

    目录 一. 广播变量 使用 二. 累加器 使用 使用场景 自定义累加器 在spark程序中,当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时,Spark操作实际上操作的 ...

  10. Vue框架,computed和watch的区别

    computed和watch定义 1.computed是计算属性,类似于过滤器,对绑定到视图的数据进行处理.官网的例子: <div id="example"> < ...