一、插件简介

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. 『学了就忘』Linux权限管理 — 55、文件特殊权限

    目录 1.文件特殊权限说明 2.设置SetUID 3.检测SetUID的脚本 4.设置SetGID (1)针对文件的作用 (2)针对目录的作用 5.Sticky BIT 6.设定文件特殊权限 7.文件 ...

  2. CF1455G Forbidden Value

    本题教训我们: 如果遇到在返回值域范围的dp时,可以考虑线段树合并操作. 考虑最开始写作一个\(if:0;end\) 那么所有的\(if\)可以记作一个树状结构,\(set\)为子节点 先把所有\(s ...

  3. Codeforces 997E - Good Subsegments(线段树维护最小值个数+历史最小值个数之和)

    Portal 题意: 给出排列 \(p_1,p_2,p_3,\dots,p_n\),定义一个区间 \([l,r]\) 是好的当且仅当 \(p_l,p_{l+1},p_{l+2},\dots,p_r\) ...

  4. Codeforces Gym 101480C - Cow Confinement(扫描线+线段树)

    题面传送门 题意: 有一个 \(10^6\times 10^6\) 的地图.其中 \(m\) 个位置上有花,\(f\) 个矩形外围用栅栏围了起来.保证 \(f\) 个矩形两两之间没有公共点. \(q\ ...

  5. kubernetes部署haproxy、keepalived为kube-apiserver做集群

    也可以用nginx.keepalived做负载均衡,看大家的需求. # yum -y install haproxy keepalived haproxy的配置文件(三台一样): cat > / ...

  6. windows Notepad++ 上配置 vs 编译器 , 编译并运行

    windows 中 配置 vs编译器 在Linux下,Kris是倾向于在终端中使用gcc和g++来编译C/C++的,在Windows下相信很多人都是选择臃肿的Visual Studio,我亦不免如此. ...

  7. 为什么CTR预估使用AUC来评估模型?

    ctr预估简单的解释就是预测用户的点击item的概率.为什么一个回归的问题需要使用分类的方法来评估,这真是一个好问题,尝试从下面几个关键问题去回答. 1.ctr预估是特殊的回归问题 ctr预估的目标函 ...

  8. html5 绘图

    SVG 在 SVG 中,每个元素是图型与数据相结合的一个对象. 修改对象属性的值,图型会立即体现出这种变化. 因为是对象,所以支持事件处理. D3使用的是SVG Canvas 不支持事件处理. cha ...

  9. 【Spring Framework】Spring入门教程(七)Spring 事件

    内置事件 Spring中的事件是一个ApplicationEvent类的子类,由实现ApplicationEventPublisherAware接口的类发送,实现ApplicationListener ...

  10. Redis,Memcache,MongoDb的特点与区别

    Redis Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支 ...