# 上传 uploadtask 3+
# 接口声明
{ "name": "system.uploadtask" }
1
# 导入模块
import uploadtask from '@system.uploadtask' 或 const uploadtask = require("@system.uploadtask")
1
# 接口定义
# 方法
# UploadTask uploadtask.uploadFile(OBJECT)
创建一个上传请求,每次成功调用 uploadtask.uploadFile 将返回本次请求的 UploadTask 实例。
# 参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
url | String | 是 | 开发者服务器接口地址 |
filePath | String | 是 | 要上传文件资源的路径 (本地路径) |
name | String | 是 | 文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容 |
header | Object | 否 | 请求的 header,会将其所有属性设置到请求的 header 部分 |
formData | Object | 否 | HTTP 请求中其他额外的 form data |
timeout | Number | 否 | 超时时间,单位为毫秒 |
success | Function | 否 | 成功返回的回调函数 |
fail | Function | 否 | 失败的回调函数,可能会因为权限失败 |
complete | Function | 否 | 结束的回调函数(调用成功、失败都会执行) |
# success 返回值:
参数名 | 类型 | 说明 |
---|---|---|
statusCode | Integer | 服务器状态 code |
data | String | 开发者服务器返回的数据 |
headers | Object | 服务器 response 的所有 header |
# UploadTask
上传任务对象
# 方法
# UploadTask.abort()
中断上传任务
# UploadTask.onProgressUpdate(callback)
监听上传进度变化事件。
# 参数
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | Function | 是 | 上传进度变化事件的回调函数 |
# callback 返回值
参数名 | 类型 | 说明 |
---|---|---|
progress | Number | 上传进度百分比 |
totalBytesSent | Number | 已经上传的数据长度,单位 Bytes |
totalBytesExpectedToSend | Number | 预期需要上传的数据总长度,单位 Bytes |
# UploadTask.offProgressUpdate(function callback)
取消监听上传进度变化事件。callback 是可选的,如果不传则取消所有通过 onProgressUpdate 监听的上传进度变化事件。
# 示例:
const retUploadTask = uploadtask.uploadFile({
url: 'http://www.example.com',
filePath: "internal://mass/download/test.png",
name: "testImg",
success: function(res){
console.log("Upload success.resp = " + JSON.stringify(res))
},
fail: function(data, code) {
console.log(`handling fail, errMsg = ${data)}`)
console.log(`handling fail, errCode = ${code}`)
}
})
// 中断请求任务
retUploadTask.abort()
// 监听上传进度事件
retUploadTask.onProgressUpdate(res => {
console.log(
`listening upload progress update event, progressUpdate data = ${JSON.stringify(res)}`
)
})
// 取消监听上传进度事件
retUploadTask.offProgressUpdate()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 取消特定的 上传进度 事件
function cb(res) {
console.log(
`listening for upload progress update event 1, progressUpdate data = ${JSON.stringify(
res
)}`
)
}
// 此次监听会被取消
retUploadTask.onProgressUpdate(cb)
// event2 监听依然有效,不会被取消
retUploadTask.onProgressUpdate((res) => {
console.log(
`listening for upload progress update event 2, progressUpdate data = ${JSON.stringify(
res
)}`
)
})
retUploadTask.offProgressUpdate(cb)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
←
→