vue+uniapp实现多任务并发下载文件 | 断点续下, 任务列表, 多任务并发限制
一、插件简介
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实现多任务并发下载文件 | 断点续下, 任务列表, 多任务并发限制的更多相关文章
- python下载mp4 同步和异步下载支持断点续下
Range 用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式: Range:(unit=first byte pos)-[last byte pos] Range 头部的格式有以下几种 ...
- 使用LoadRunner脚本并发下载文件,出现19890错误
需求:10个客户并发下载同一份zip文件.执行的时候,8个Fail了,只下载了两份zip,且无论执行多少遍,都是这样. 错误信息如下:message code:-19890C interpreter ...
- ajax请求过程中下载文件在火狐下的兼容问题
项目中碰到的问题,记录如下. 需求很简单,点击一个文件链接下载该文件,同时向后台发送请求.需求很常见,用户点击下载后通常要进行下载量的统计,统计的话可以利用 script标签 或者 img标签(图片p ...
- java下载文件指定目录下的文件
方法一: @RequestMapping('download')def download(HttpServletRequest request, HttpServletResponse respons ...
- php下载文件夹目录下的文件
最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...
- 用wget下载文件
wget使用文档:https://www.gnu.org/software/wget/manual/wget.html 最开始常用的比如: wget -O /e/movie.mp4 http://w ...
- 转:Windows下用sftp自动下载文件
远程服务器是Linux操作系统,没有ftp服务,可以ssh,数据库每天2:00会自动创建一个备份文件,本地计算机是windows操作系统,希望用sftp每天3:00下载远程服务器上的备份文件.本地系统 ...
- 二、Delphi10.3在不下载文件情况下读取网站文件大小等信息
一.上源码 uses TxHttp, Classes, TxCommon, Frm_WebTool, SysUtils; var m_Url: string; m_Http: TTxHttp; m_P ...
- Linux下不借助工具实现远程linux服务器上传下载文件
# Linux下不借助工具实现远程linux服务器上传下载文件 ## 简介 - Linux下自带ssh工具,可以实现远程Linux服务器的功能- Linux下自带scp工具,可以实现文件传输功能 ## ...
随机推荐
- 为了拿捏 Redis 数据结构,我画了 40 张图(完整版)
大家好,我是小林. Redis 为什么那么快? 除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理. ...
- git创建项目,代码仓库
1.首先在服务端远程创建仓库 mkdir project.git cd project.git git --bare init 2.在本地创建项目推送到远程服务端仓库 mkdir myproj ...
- 非寻常方式学习ApacheTomcat架构及10.0.12源码编译
概述 开启博客分享已近三个月,感谢所有花时间精力和小编一路学习和成长的伙伴们,有你们的支持,我们继续再接再厉 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 Tomcat官 ...
- 14. GLIBCXX_3.4.9' not found - 解决办法
在Linux中安装交叉编译器arm-linux-gcc 4.4.3,然后编译mini2440内核出错: /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.9' ...
- 使用WtmPlus低代码平台提高生产力
低代码平台的概念很火爆,产品也是鱼龙混杂. 对于开发人员来说,在使用绝大部分低代码平台的时候都会遇到一个致命的问题:我在上面做的项目无法得到源码,完全黑盒.一旦我的需求平台满足不了,那就是无解. ...
- 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(四)-介绍库函数,获取一些SD卡的信息
其他链接 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 ...
- innodb和myisam对比及索引原理区别
InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了 1.事务和外键 InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版 ...
- Output of C++ Program | Set 11
Predict the output of following C++ programs. Question 1 1 #include<iostream> 2 using namespac ...
- mybatis-插件开发
在Executor.StatementHandler.parameterHandler.resultSetHandler创建的时候都有一步这样的操作xxxHandler=interceptorChai ...
- Redis数据类型内部编码规则及优化方式
Redis的每个键值都是使用一个redisObject结构体保存的,redisObject的定义如下: typedef struct redisObject { unsigned type:4; un ...