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