# Uploader 文件上传
方法
- createUpload 新建上传任务
- enumerate 枚举上传任务
- clear 清除上传任务
- startAll 开始所有上传任务
对象
- UploadTask 上传任务对象
- UploadState 上传任务状态
# 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
};