# Downloader 文件下载

# 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

开始下载任务

  // 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
};
Last Updated: 9/25/2023, 10:43:24 AM