# Downloader 文件下载
方法
- createDownload 新建下载任务
- enumerate 枚举下载任务
- clear 清除下载任务
- startAll 开始所有下载任务
对象
- DownloadTask 下载任务对象
- DownloadState 下载任务状态
# createDownload
创建下载任务
参数说明
参数名 类型 必填 说明 url String 是 下载文件URL地址 options DownloadOptions 是 下载任务详细参数,详见下表 completedCB Function 可选 下载任务完成回调函数,当下载任务下载完成时触发,成功或失败都会触发 DownloadOptions参数
参数名 类型 必填 说明 method String 否 网络请求类型,支持http协议的“GET”、“POST”,默认为“GET”请求。 data Object 否 POST请求时提交的数据,仅在网络请求类型method设置为"POST"时有效 header Object 否 下载任务HTTP报文头 filename String 是 下载文件保存的路径,保存文件路径仅支持以"_downloads/"、"_doc/"、"_documents/"开头的字符串。文件路径以文件后缀名结尾(如"_doc/download/sdk.doc")表明指定保存文件目录及名称,以“/”结尾则认为指定保存文件的目录(此时程序自动生成文件名)。 priority Number 否 下载任务的优先级(暂不支持),数值越大优先级越高,默认优先级值为0 timeout Number 否 下载任务超时时间(暂不支持),单位为s(秒),默认值为120s。 超时时间为服务器响应请求的时间(不是下载任务完成的总时间),如果设置为0则表示永远不超时。 retry Number 否 下载任务重试次数(暂不支持),默认为重试3次 retryInterval Number 否 下载任务重试间隔时间(暂不支持),单位为s(秒),默认值为30s completedCB 返回参数说明
参数 类型 说明 task DownloadTask 下载任务 示例代码
let url = 'http://inflex.oicp.net/mock-example/file/download?fileName=test1.txt';
let options = {
filename: '_downloads/test/'
};
// 创建下载任务
let task = foxsdk.downloader.createDownload(url, options, task => {
let DownloadState = foxsdk.downloader.DownloadState;
if (task.state == DownloadState.Finished) {
console.log('##下载任务成功完成回调##\n' + JSON.stringify(task));
} else {
console.log('##下载任务失败完成回调##\n' + JSON.stringify(task));
}
});
// 开始下载
task.start();
# enumerate
枚举下载任务
参数说明
参数名 类型 必填 说明 state Number 是 下载任务的状态,如果未指定state值,则清除所有未完成的下载任务。 successCb Function 是 枚举下载任务成功回调 successCb 返回参数说明
参数 类型 说明 tasks Array[DownloadTask] 下载任务 示例代码
let state = foxsdk.downloader.DownloadState.All;
foxsdk.downloader.enumerate(state, tasks => {
console.log('##下载任务枚举回调(任务数:' + tasks.length + ')##\n' + JSON.stringify(tasks));
});
# clear
清除下载任务
参数说明
参数名 类型 必填 说明 state Number 是 下载任务的状态,如果未指定state值,则清除所有未完成的下载任务。 示例代码
let state = foxsdk.downloader.DownloadState.All;
foxsdk.downloader.clear(state);
# startAll
开始所有下载任务
开始所有处于为开始调度或暂停状态的下载任务。 若下载任务数超过可并发处理的总数,超出的任务处于调度状态(等待下载),当有任务完成时根据调度状态任务的优先级选择任务开始下载。
- 示例代码
foxsdk.downloader.startAll();
# DownloadTask
- 属性
identify
:下载任务标识url
:下载文件的地址state
:下载任务的状态filename
:下载的文件名称options
: 下载任务的参数downloadedSize
: 已完成下载文件的大小totalSize
: 下载任务文件的总大小
- 方法
- start 开始下载任务
- pause 暂停下载任务
- resume 恢复下载任务
- abort 取消下载任务
- stateChanged 监听下载任务
# start
开始下载任务
- 示例代码 请先创建下载任务,创建下载任务
// let task = foxsdk.downloader.createDownload(url, options, completeCb)
task.start();
# pause
暂停下载任务
- 示例代码 请先创建下载任务,创建下载任务
// let task = foxsdk.downloader.createDownload(url, options, completeCb)
task.pause();
# resume
开始下载任务
- 示例代码 请先创建下载任务,创建下载任务
// let task = foxsdk.downloader.createDownload(url, options, completeCb)
task.resume();
# abort
取消下载任务
- 示例代码 请先创建下载任务,创建下载任务
// let task = foxsdk.downloader.createDownload(url, options, completeCb)
task.abort();
# stateChanged
监听下载任务状态变化
参数说明
参数名 类型 必填 说明 stateChangedCb Function 是 监听下载任务状态变化回调 stateChangedCb 返回参数说明
参数 类型 说明 task DownloadTask 下载任务 示例代码 请先创建下载任务,创建下载任务
// let task = foxsdk.downloader.createDownload(url, options, completeCb)
this.task[id].stateChanged(task => {
console.log('##下载任务监听回调##\n' + JSON.stringify(task));
});
# DownloadState
下载任务状态,如:foxsdk.downloader.DownloadState.All
- 常量
/**
* 下载状态
*/
const DownloadState = {
/**
* 下载任务未开始
*/
Undefined: -1001,
/**
* 所有下载任务
*/
All: -1,
/**
* 下载任务开始调度
*/
Start: 0,
/**
* 下载任务开始请求,发送请求到服务器并等待服务器的响应
*/
StartRequest: 1,
/**
* 下载任务请求已经接收,服务器返回响应,准备传输数据内容
*/
ReadReceived: 2,
/**
* 下载任务接收数据,可多次触发此状态。
*/
Received: 3,
/**
* 下载任务已完成(成功)
*/
Finished: 4,
/**
* 下载任务已暂停
*/
Pause: 5,
/**
* 下载任务发生异常
*/
Error: 6
};