# Uploader 文件上传

# createUpload

创建上传任务

  • 参数说明

    参数名 类型 必填 说明
    url String 上传文件URL地址
    options UploadOptions 上传任务详细参数,详见下表
    completedCB Function 可选 上传任务完成回调函数,当上传任务上传完成时触发,成功或失败都会触发
  • UploadOptions参数

    参数名 类型 必填 说明
    blocksize Number 上传任务每次上传的文件块大小(暂不支持)。单位为Byte(字节),默认值为102400,若设置值小于等于0则表示不分块上传。仅在支持断点续传的服务有效
    chunkSize Number 分块上传的大小。单位为Kb,设置值小于等于0则不分块上传,默认为不分块上传。注意:分块上传需要服务器支持,如果服务器不支持则会上传失败
    method String 网络请求类型,仅支持http协议的“POST”请求。
    header Object 上传任务HTTP报文头
    priority Number 上传任务的优先级(暂不支持),数值越大优先级越高,默认优先级值为0
    timeout Number 上传任务超时时间(暂不支持),单位为s(秒),默认值为120s。 超时时间为服务器响应请求的时间(不是上传任务完成的总时间),如果设置为0则表示永远不超时。
    retry Number 上传任务重试次数(暂不支持),默认为重试3次
    retryInterval Number 上传任务重试间隔时间(暂不支持),单位为s(秒),默认值为30s
  • completedCB 返回参数说明

    参数 类型 说明
    task UploadTask 上传任务
  • 示例代码

  let url = 'http://inflex.oicp.net/mock-example/file/upload';
  let options = {
    identify:'taskid',
    blocksize: 102400,
    chunkSize: 1,
    method:'POST',
    header:{},
    priority:0,
    timeout:200,
    retry:3,
    retryInterval:30
  };
  // 创建上传任务
  let task = foxsdk.uploader.createUpload(url, options, task => {
    let UploadState = foxsdk.uploader.UploadState;
    if (task.state == UploadState.Finished) {
      console.log('##上传任务成功完成回调##\n' + JSON.stringify(task));
    } else {
      console.log('##上传任务失败完成回调##\n' + JSON.stringify(task));
    }
  });
  let path = '_downloads/202001091600.txt';
  let options1 = {
    key: 'key202001091600',
    name: '202001091600.txt'
  };
  // 添加上传文件
  task.addFile(path, options1, retObj => {
    console.log('##添加上传文件回调##\n' + JSON.stringify(retObj));
  });
  // 添加上传数据
  task.addData('keyName', 'keyValue', retObj => {
    console.log('##添加上传数据回调##\n' + JSON.stringify(retObj));
  });

# enumerate

枚举上传任务

  • 参数说明

    参数名 类型 必填 说明
    state Number 上传任务的状态,如果未指定state值,则清除所有未完成的上传任务。
    successCb Function 枚举上传任务成功回调
  • successCb 返回参数说明

    参数 类型 说明
    tasks Array[UploadTask] 上传任务
  • 示例代码

  let state = foxsdk.uploader.UploadState.All;
  foxsdk.uploader.enumerate(state, tasks => {
    console.log('##上传任务枚举回调(任务数:' + tasks.length + ')##\n' + JSON.stringify(tasks));
  });

# clear

清除上传任务

  • 参数说明

    参数名 类型 必填 说明
    state Number 上传任务的状态,如果未指定state值,则清除所有未完成的上传任务。
  • 示例代码

  let state = foxsdk.uploader.UploadState.All;
  foxsdk.uploader.clear(state);

# startAll

开始所有上传任务

开始所有处于为开始调度或暂停状态的上传任务。 若上传任务数超过可并发处理的总数,超出的任务处于调度状态(等待上传),当有任务完成时根据调度状态任务的优先级选择任务开始上传。

  • 示例代码
  foxsdk.uploader.startAll();

# UploadTask

  • 属性
    • identify:上传任务标识
    • url:上传文件的地址
    • state:上传任务的状态
    • options: 上传任务的参数
    • responseText:上传任务完成后服务器返回的数据
    • uploadedSize: 已完成上传文件的大小
    • totalSize: 上传任务文件的总大小
  • 方法

# addFile

添加上传文件

  • 参数说明

    参数名 类型 必填 说明
    path String 添加上传文件的路径,支持绝对及_doc等开头路径
    options Object 要添加上传文件的参数,可通过此参数设置上传任务属性,如文件标识、文件名称、文件类型等。
  • 示例代码 请先创建上传任务,创建上传任务

  // 请先创建上传任务 task
  // let task = foxsdk.uploader.createUpload(url, options, completeCb)
  let path = '_downloads/202001091600.txt';
  let options1 = {
    key: 'key202001091600',
    name: '202001091600.txt'
  };
  // 添加上传文件
  task.addFile(path, options1, retObj => {
    console.log('##添加上传文件回调##\n' + JSON.stringify(retObj));
  });

# addData

添加上传数据

  • 参数说明

    参数名 类型 必填 说明
    key String 添加上传数据的键名
    value String 添加上传数据的键值

    备注:addData的数据会以表单的形式(添加到body)提交

  • 示例代码 请先创建上传任务,创建上传任务

  // 请先创建上传任务 task
  // let task = foxsdk.uploader.createUpload(url, options, completeCb)
  // 添加上传数据
  task.addData('keyName', 'keyValue', retObj => {
    console.log('##添加上传数据回调##\n' + JSON.stringify(retObj));
  });

# start

开始上传任务

  // let task = foxsdk.uploader.createUpload(url, options, completeCb)
  task.start();

# pause

暂停上传任务

  // let task = foxsdk.uploader.createUpload(url, options, completeCb)
  task.pause();

# resume

开始上传任务

  // let task = foxsdk.uploader.createUpload(url, options, completeCb)
  task.resume();

# abort

取消上传任务

  // let task = foxsdk.uploader.createUpload(url, options, completeCb)
  task.abort();

# stateChanged

监听上传任务状态变化

  • 参数说明

    参数名 类型 必填 说明
    stateChangedCb Function 监听上传任务状态变化回调
  • stateChangedCb 返回参数说明

    参数 类型 说明
    task UploadTask 上传任务
  • 示例代码 请先创建上传任务,创建上传任务

  // let task = foxsdk.uploader.createUpload(url, options, completeCb)
  this.task[id].stateChanged(task => {
    console.log('##上传任务监听回调##\n' + JSON.stringify(task));
  });

# UploadState

上传任务状态,如:foxsdk.uploader.UploadState.All

  • 常量
/**
 * 上传状态
 */
const UploadState = {
  /**
   * 上传任务未开始
   */
  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