# 上传 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
# 取消特定的 上传进度 事件
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