js-apis-request.md 111.1 KB
Newer Older
1
# @ohos.request (上传下载)
A
修改  
anyueling 已提交
2

A
anyueling 已提交
3
request部件主要给应用提供上传下载文件、后台传输代理的基础能力。
A
修改  
anyueling 已提交
4

5 6
> **说明:**
>
Z
zengyawen 已提交
7 8 9 10 11 12
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块


Z
zengyawen 已提交
13
```js
Z
zengyawen 已提交
14 15 16 17 18 19 20 21 22
import request from '@ohos.request';
```

## 常量

**需要权限**:ohos.permission.INTERNET

**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download。

A
anyueling 已提交
23 24 25 26 27 28 29 30 31
### 网络类型
下载支持自定义网络类型,可以在[DownloadConfig](#downloadconfig)中通过networkType配置成以下网络类型。

| 名称 | 参数类型 | 数值 | 说明 |
| -------- | -------- | -------- | -------- |
| NETWORK_MOBILE | number | 0x00000001 | 使用蜂窝网络时允许下载的位标志。 |
| NETWORK_WIFI | number | 0x00010000 | 使用WLAN时允许下载的位标志。 |

### 下载任务的错误码
32
下载[on('fail')<sup>7+</sup>](#onfail7)事件callback的错误参数、[getTaskInfo<sup>9+</sup>](#gettaskinfo9)返回值的failedReason字段取值。
A
anyueling 已提交
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49

| 名称 | 参数类型 | 数值 | 说明 |
| -------- | -------- | -------- | -------- |
| ERROR_CANNOT_RESUME<sup>7+</sup> | number |   0   | 网络原因导致恢复下载失败。 |
| ERROR_DEVICE_NOT_FOUND<sup>7+</sup> | number |   1   | 找不到SD卡等存储设备。 |
| ERROR_FILE_ALREADY_EXISTS<sup>7+</sup> | number |   2   | 要下载的文件已存在,下载会话不能覆盖现有文件。 |
| ERROR_FILE_ERROR<sup>7+</sup> | number |   3   | 文件操作失败。 |
| ERROR_HTTP_DATA_ERROR<sup>7+</sup> | number |   4   | HTTP传输失败。 |
| ERROR_INSUFFICIENT_SPACE<sup>7+</sup> | number |   5   | 存储空间不足。 |
| ERROR_TOO_MANY_REDIRECTS<sup>7+</sup> | number |   6   | 网络重定向过多导致的错误。 |
| ERROR_UNHANDLED_HTTP_CODE<sup>7+</sup> | number |   7   | 无法识别的HTTP代码。 |
| ERROR_UNKNOWN<sup>7+</sup> | number |   8   | 未知错误。 |
| ERROR_OFFLINE<sup>9+</sup> | number |   9   | 网络未连接。 |
| ERROR_UNSUPPORTED_NETWORK_TYPE<sup>9+</sup> | number |   10   | 网络类型不匹配。 |


### 下载任务暂停原因
50
下载相关[getTaskInfo<sup>9+</sup>](#gettaskinfo9)返回值的pausedReason字段取值。
A
anyueling 已提交
51 52 53 54 55 56 57 58 59 60

| 名称 | 参数类型 | 数值 | 说明 |
| -------- | -------- | -------- | -------- |
| PAUSED_QUEUED_FOR_WIFI<sup>7+</sup> | number |   0   | 下载被暂停并等待WLAN连接,因为文件大小超过了使用蜂窝网络的会话允许的最大值。 |
| PAUSED_WAITING_FOR_NETWORK<sup>7+</sup> | number |   1   | 由于网络问题(例如网络断开)而暂停下载。 |
| PAUSED_WAITING_TO_RETRY<sup>7+</sup> | number |   2   | 发生网络错误,将重试下载会话。 |
| PAUSED_BY_USER<sup>9+</sup> | number |   3   | 用户暂停会话。 |
| PAUSED_UNKNOWN<sup>7+</sup> | number |   4   | 未知原因导致暂停下载。 |

### 下载任务状态码
61
下载相关[getTaskInfo<sup>9+</sup>](#gettaskinfo9)返回值的status字段取值。
A
anyueling 已提交
62 63 64 65 66 67 68 69

| 名称 | 参数类型 | 数值 | 说明 |
| -------- | -------- | -------- | -------- |
| SESSION_SUCCESSFUL<sup>7+</sup> | number |   0   | 下载会话已完成。 |
| SESSION_RUNNING<sup>7+</sup> | number |   1   | 下载会话正在进行中。 |
| SESSION_PENDING<sup>7+</sup> | number |   2   | 正在调度下载会话。 |
| SESSION_PAUSED<sup>7+</sup> | number |   3   | 下载会话已暂停。 |
| SESSION_FAILED<sup>7+</sup> | number |   4   | 下载会话已失败,将不会重试。 |
Z
zengyawen 已提交
70 71


A
anyueling 已提交
72
## request.uploadFile<sup>9+</sup>
Z
zengyawen 已提交
73

A
anyueling 已提交
74
uploadFile(context: BaseContext, config: UploadConfig): Promise&lt;UploadTask&gt;
Z
zengyawen 已提交
75

76
上传,异步方法,使用promise形式返回结果。通过[on('complete'|'fail')<sup>9+</sup>](#oncomplete--fail9)可获取任务上传时的错误信息。
Z
zengyawen 已提交
77 78 79 80 81

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

82 83 84
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
85
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
86
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
Z
zengyawen 已提交
87
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
Z
zengyawen 已提交
88

A
anyueling 已提交
89

90 91 92
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
93
  | -------- | -------- |
Z
zengyawen 已提交
94
  | Promise&lt;[UploadTask](#uploadtask)&gt; | 返回上传任务。 |
Z
zengyawen 已提交
95

A
anyueling 已提交
96
**错误码:**
97

A
anyueling 已提交
98 99 100 101
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
102
  | 13400002 | bad file path. |
A
anyueling 已提交
103

104
**示例:**
A
anyueling 已提交
105

106 107 108
  ```ts
  let uploadTask: request.UploadTask;
  let uploadConfig: request.UploadConfig = {
A
anyueling 已提交
109
    url: 'http://patch',
A
anyueling 已提交
110 111 112 113 114
    header: { key1: "value1", key2: "value2" },
    method: "POST",
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
  };
A
anyueling 已提交
115
  try {
116
    request.uploadFile(this.context, uploadConfig).then((data: request.UploadTask) => {
Z
zengyawen 已提交
117
      uploadTask = data;
118
    }).catch((err: BusinessError) => {
119
      console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
A
anyueling 已提交
120 121
    });
  } catch (err) {
122
    console.error(`Failed to request the upload. err: ${JSON.stringify(err)}`);
A
anyueling 已提交
123
  }
Z
zengyawen 已提交
124 125
  ```

126 127 128 129
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。

Z
zengyawen 已提交
130

A
anyueling 已提交
131
## request.uploadFile<sup>9+</sup>
Z
zengyawen 已提交
132

A
anyueling 已提交
133
uploadFile(context: BaseContext, config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
Z
zengyawen 已提交
134

135
上传,异步方法,使用callback形式返回结果。通过[on('complete'|'fail')<sup>9+</sup>](#oncomplete--fail9)可获取任务上传时的错误信息。
Z
zengyawen 已提交
136 137 138 139 140

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

141 142
**参数:**

143
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
144
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
145
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
Z
zengyawen 已提交
146
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
147
  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 是 | 回调函数,异步返回UploadTask对象。 |
Z
zengyawen 已提交
148

A
anyueling 已提交
149
**错误码:**
150

A
anyueling 已提交
151 152 153 154
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
155
  | 13400002 | bad file path. |
A
anyueling 已提交
156

157
**示例:**
A
anyueling 已提交
158

159 160 161
  ```ts
  let uploadTask: request.UploadTask;
  let uploadConfig: request.UploadConfig = {
A
anyueling 已提交
162
    url: 'http://patch',
A
anyueling 已提交
163 164 165 166 167
    header: { key1: "value1", key2: "value2" },
    method: "POST",
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
  };
A
anyueling 已提交
168
  try {
169
    request.uploadFile(this.context, uploadConfig, (err: BusinessError, data: request.UploadTask) => {
Z
zengyawen 已提交
170
      if (err) {
171 172
        console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
        return;
Z
zengyawen 已提交
173 174
      }
      uploadTask = data;
A
anyueling 已提交
175 176
    });
  } catch (err) {
177
    console.error(`Failed to request the upload. err: ${JSON.stringify(err)}`);
A
anyueling 已提交
178
  }
Z
zengyawen 已提交
179
  ```
A
anyueling 已提交
180

181 182 183 184
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。

A
anyueling 已提交
185 186 187
## request.upload<sup>(deprecated)</sup>

upload(config: UploadConfig): Promise&lt;UploadTask&gt;
A
anyueling 已提交
188 189 190

上传,异步方法,使用promise形式返回结果。

A
anyueling 已提交
191 192 193
**模型约束**:此接口仅可在FA模型下使用

>  **说明:** 从API Version 9开始不再维护,建议使用[request.uploadFile<sup>9+</sup>](#requestuploadfile9)替代。
194

A
anyueling 已提交
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |

**返回值:**

  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;[UploadTask](#uploadtask)&gt; | 返回上传任务。 |

**示例:**
A
anyueling 已提交
212

A
anyueling 已提交
213 214 215
  ```js
  let uploadTask;
  let uploadConfig = {
A
anyueling 已提交
216
    url: 'http://patch',
A
anyueling 已提交
217 218
    header: { key1: "value1", key2: "value2" },
    method: "POST",
A
anyueling 已提交
219 220
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
A
anyueling 已提交
221
  };
A
anyueling 已提交
222
  request.upload(uploadConfig).then((data) => {
223
    uploadTask = data;
A
anyueling 已提交
224
  }).catch((err) => {
225
    console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
A
anyueling 已提交
226
  })
A
anyueling 已提交
227 228 229
  ```


A
anyueling 已提交
230
## request.upload<sup>(deprecated)</sup>
A
anyueling 已提交
231

A
anyueling 已提交
232
upload(config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
A
anyueling 已提交
233 234 235

上传,异步方法,使用callback形式返回结果。

A
anyueling 已提交
236 237 238
**模型约束**:此接口仅可在FA模型下使用

>  **说明:** 从API Version 9开始不再维护,建议使用[request.uploadFile<sup>9+</sup>](#requestuploadfile9-1)替代。
239

A
anyueling 已提交
240 241 242 243 244
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**参数:**
Z
zengyawen 已提交
245

246
  | 参数名 | 类型 | 必填 | 说明 |
A
anyueling 已提交
247 248
  | -------- | -------- | -------- | -------- |
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
249
  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 是 | 回调函数,异步返回UploadTask对象。 |
A
anyueling 已提交
250 251

**示例:**
A
anyueling 已提交
252

A
anyueling 已提交
253 254 255
  ```js
  let uploadTask;
  let uploadConfig = {
A
anyueling 已提交
256
    url: 'http://patch',
A
anyueling 已提交
257 258 259 260 261
    header: { key1: "value1", key2: "value2" },
    method: "POST",
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
  };
A
anyueling 已提交
262
  request.upload(uploadConfig, (err, data) => {
263 264 265 266 267
    if (err) {
      console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
      return;
    }
    uploadTask = data;
A
anyueling 已提交
268 269
  });
  ```
Z
zengyawen 已提交
270 271 272

## UploadTask

A
anyueling 已提交
273 274
上传任务,使用下列方法前,需要先获取UploadTask对象,promise形式通过[request.uploadFile<sup>9+</sup>](#requestuploadfile9)获取,callback形式通过[request.uploadFile<sup>9+</sup>](#requestuploadfile9-1)获取。

Z
zengyawen 已提交
275 276 277 278


### on('progress')

Z
zengyawen 已提交
279
on(type: 'progress', callback:(uploadedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
280

281
订阅上传任务进度监听,同步方法,使用callback形式返回结果。
Z
zengyawen 已提交
282

283 284 285 286
> **说明:**
>
> 当应用处于后台时,为满足功耗性能要求,不支持调用此接口进行回调。

Z
zengyawen 已提交
287 288 289 290
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

291 292 293
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
294
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
295 296
  | type | string | 是 | 订阅的事件类型,取值为'progress'(上传的进度信息)。 |
  | callback | function | 是 | 上传进度的回调函数。 |
Z
zengyawen 已提交
297

298
  回调函数的参数
Z
zengyawen 已提交
299

300 301
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
302 303
| uploadedSize | number | 是 | 当前已上传文件大小,单位为B。 |
| totalSize | number | 是 | 上传文件的总大小,单位为B。 |
Z
zengyawen 已提交
304

305
**示例:**
A
anyueling 已提交
306

307 308
  ```ts
  let upProgressCallback = (uploadedSize: number, totalSize: number) => {
309
    console.info("upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize);
310 311
  };
  uploadTask.on('progress', upProgressCallback);
Z
zengyawen 已提交
312 313 314 315 316
  ```


### on('headerReceive')<sup>7+</sup>

Z
zengyawen 已提交
317
on(type: 'headerReceive', callback:  (header: object) =&gt; void): void
Z
zengyawen 已提交
318

319
订阅上传任务HTTP标头监听,同步方法,使用callback形式返回结果。
Z
zengyawen 已提交
320 321 322 323 324

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

325 326 327
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
328
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
329
  | type | string | 是 | 订阅的事件类型,取值为'headerReceive'(接收响应头)。 |
Z
zengyawen 已提交
330
  | callback | function | 是 | HTTP&nbsp;Response&nbsp;Header事件的回调函数。 |
Z
zengyawen 已提交
331 332 333

  回调函数的参数:

334 335 336
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
337

338
**示例:**
A
anyueling 已提交
339

340 341
  ```ts
  let headerCallback = (headers: object) => {
342
    console.info("upOnHeader headers:" + JSON.stringify(headers));
343 344
  };
  uploadTask.on('headerReceive', headerCallback);
Z
zengyawen 已提交
345 346 347
  ```


A
修改  
anyueling 已提交
348
### on('complete' | 'fail')<sup>9+</sup>
A
anyueling 已提交
349 350 351

 on(type:'complete' | 'fail', callback: Callback&lt;Array&lt;TaskState&gt;&gt;): void;

352
订阅上传任务完成或失败监听,同步方法,使用callback形式返回结果。
A
anyueling 已提交
353 354 355 356 357 358 359 360 361 362

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 订阅的事件类型,取值为'complete',表示上传任务完成;取值为'fail',表示上传任务失败。|
363
  | callback | Callback&lt;Array&lt;TaskState&gt;&gt; | 是 | 上传任务完成或失败的回调函数。 |
A
anyueling 已提交
364 365 366 367 368

  回调函数的参数

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
修改  
anyueling 已提交
369
| taskstates | Array&lt;[TaskState](#taskstate9)&gt; | 是 | 上传任务返回结果 |
A
anyueling 已提交
370 371

**示例:**
A
anyueling 已提交
372

373 374 375
  ```ts
  let upCompleteCallback = (taskStates: Array<request.TaskState>) => {
    for (let i = 0; i < taskStates.length; i++) {
376
      console.info("upOnComplete taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
377
    }
378
  };
C
cy7717 已提交
379
  uploadTask.on('complete', upCompleteCallback);
A
anyueling 已提交
380

381 382
  let upFailCallback = (taskStates: Array<request.TaskState>) => {
    for (let i = 0; i < taskStates.length; i++) {
A
修改  
anyueling 已提交
383
      console.info("upOnFail taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
384
    }
385 386
  };
  uploadTask.on('fail', upFailCallback);
A
anyueling 已提交
387 388 389
  ```


Z
zengyawen 已提交
390 391
### off('progress')

Z
zengyawen 已提交
392
off(type:  'progress',  callback?: (uploadedSize: number, totalSize: number) =&gt;  void): void
Z
zengyawen 已提交
393

394
取消订阅上传任务进度监听,同步方法。
Z
zengyawen 已提交
395 396 397 398 399

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

400 401
**参数:**

402
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
403
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
404
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(上传的进度信息)。 |
405
  | callback | function | 否 | 需要删除的上传任务进度的回调函数。<br/>uploadedSize:当前已上传文件的大小,单位为B。<br/>totalSize:上传文件的总大小,单位为B。 |
Z
zengyawen 已提交
406

407
**示例:**
A
anyueling 已提交
408

409 410
  ```ts
  let upProgressCallback = (uploadedSize: number, totalSize: number) => {
411
    console.info('Upload delete progress notification.' + 'totalSize:' + totalSize + 'uploadedSize:' + uploadedSize);
C
cy7717 已提交
412
  };
413
  uploadTask.off('progress', upProgressCallback);
Z
zengyawen 已提交
414 415 416 417 418
  ```


### off('headerReceive')<sup>7+</sup>

Z
zengyawen 已提交
419
off(type: 'headerReceive', callback?: (header: object) =&gt; void): void
Z
zengyawen 已提交
420

421
取消订阅上传任务HTTP标头监听,同步方法。
Z
zengyawen 已提交
422 423 424 425 426

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

427 428
**参数:**

429
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
430
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
431
  | type | string | 是 | 取消订阅的事件类型,取值为'headerReceive'(接收响应头)。 |
432
  | callback | function | 否 | HTTP&nbsp;Response&nbsp;需要删除的Header事件的回调函数。<br/>header:HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
433

434
**示例:**
A
anyueling 已提交
435

436 437
  ```ts
  let headerCallback = (header: object) => {
438
    console.info(`Upload delete headerReceive notification. header: ${JSON.stringify(header)}`);
C
cy7717 已提交
439
  };
440
  uploadTask.off('headerReceive', headerCallback);
Z
zengyawen 已提交
441 442
  ```

A
修改  
anyueling 已提交
443
### off('complete' | 'fail')<sup>9+</sup>
A
anyueling 已提交
444

A
anyueling 已提交
445
 off(type:'complete' | 'fail', callback?: Callback&lt;Array&lt;TaskState&gt;&gt;): void;
A
anyueling 已提交
446

447
取消订阅上传任务完成或失败监听,同步方法。
A
anyueling 已提交
448 449 450 451 452 453 454 455 456 457

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 订阅的事件类型,取值为'complete',表示上传任务完成;取值为'fail',表示上传任务失败。|
458
  | callback | Callback&lt;Array&lt;TaskState&gt;&gt; | 否 | 需要删除的上传任务完成或失败的回调函数。<br/>taskstates:上传任务返回结果 |
A
anyueling 已提交
459 460

**示例:**
A
anyueling 已提交
461

462 463
  ```ts
  let upCompleteCallback = (taskStates: Array<request.TaskState>) => {
C
cy7717 已提交
464
    console.info('Upload delete complete notification.');
465
    for (let i = 0; i < taskStates.length; i++) {
466
      console.info('taskState:' + JSON.stringify(taskStates[i]));
C
cy7717 已提交
467 468
    }
  };
469
  uploadTask.off('complete', upCompleteCallback);
A
anyueling 已提交
470

471
  let upFailCallback = (taskStates: Array<request.TaskState>) => {
C
cy7717 已提交
472
    console.info('Upload delete fail notification.');
473
    for (let i = 0; i < taskStates.length; i++) {
C
cy7717 已提交
474 475 476
      console.info('taskState:' + JSON.stringify(taskStates[i]));
    }
  };
477
  uploadTask.off('fail', upFailCallback);
A
anyueling 已提交
478 479
  ```

A
anyueling 已提交
480 481
### delete<sup>9+</sup>
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
482 483 484 485 486 487 488

移除上传的任务,异步方法,使用promise形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

489 490 491
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
492
  | -------- | -------- |
Z
zengyawen 已提交
493
  | Promise&lt;boolean&gt; | 移除任务是否成功。true:成功,false:不成功。 |
Z
zengyawen 已提交
494

495
**示例:**
A
anyueling 已提交
496

497 498
  ```ts
  uploadTask.delete().then((result: boolean) => {
499
    console.info('Succeeded in deleting the upload task.');
500
  }).catch((err: BusinessError) => {
501
    console.error(`Failed to delete the upload task. Code: ${err.code}, message: ${err.message}`);
Z
zengyawen 已提交
502 503 504 505
  });
  ```


A
anyueling 已提交
506
### delete<sup>9+</sup>
Z
zengyawen 已提交
507

A
anyueling 已提交
508
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
509 510 511 512 513 514 515

移除上传的任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

516 517
**参数:**

518
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
519
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
520
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务的回调函数。 |
Z
zengyawen 已提交
521

522
**示例:**
A
anyueling 已提交
523

524 525
  ```ts
  uploadTask.delete((err: BusinessError, result: boolean) => {
526 527 528 529
    if (err) {
      console.error(`Failed to delete the upload task. Code: ${err.code}, message: ${err.message}`);
      return;
    }
530
    console.info('Succeeded in deleting the upload task.');
Z
zengyawen 已提交
531 532 533 534
  });
  ```


A
anyueling 已提交
535
### remove<sup>(deprecated)</sup>
536

A
anyueling 已提交
537
remove(): Promise&lt;boolean&gt;
538 539 540

移除上传的任务,异步方法,使用promise形式返回结果。

A
anyueling 已提交
541 542
>  **说明:** 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9)替代。

543 544 545 546 547 548
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**返回值:**

A
anyueling 已提交
549
  | 类型 | 说明 |
550
  | -------- | -------- |
A
anyueling 已提交
551
  | Promise&lt;boolean&gt; | 移除任务是否成功。true:成功,false:不成功。 |
552 553 554 555

**示例:**

  ```js
A
anyueling 已提交
556
  uploadTask.remove().then((result) => {
557
    console.info('Succeeded in removing the upload task.');
558
  }).catch((err) => {
559
    console.error(`Failed to remove the upload task. Code: ${err.code}, message: ${err.message}`);
560 561 562 563
  });
  ```


A
anyueling 已提交
564
### remove<sup>(deprecated)</sup>
565

A
anyueling 已提交
566
remove(callback: AsyncCallback&lt;boolean&gt;): void
567 568 569

移除上传的任务,异步方法,使用callback形式返回结果。

A
anyueling 已提交
570 571
>  **说明:** 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9-1)替代。

572 573 574 575 576 577
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**参数:**

A
anyueling 已提交
578
  | 参数名 | 类型 | 必填 | 说明 |
579
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
580
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务的回调函数。 |
581 582 583 584

**示例:**

  ```js
A
anyueling 已提交
585
  uploadTask.remove((err, result) => {
586 587 588 589 590 591 592 593 594
    if (err) {
      console.error(`Failed to remove the upload task. Code: ${err.code}, message: ${err.message}`);
      return;
    }
    if (result) {
      console.info('Succeeded in removing the upload task.');
    } else {
      console.error(`Failed to remove the upload task. Code: ${err.code}, message: ${err.message}`);
    }
595 596 597
  });
  ```

Z
zengyawen 已提交
598
## UploadConfig
599
上传任务的配置信息。
Z
zengyawen 已提交
600

A
anyueling 已提交
601 602
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
603 604
**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Upload。

Z
zengyawen 已提交
605
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
606
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
607
| url | string | 是 | 资源地址。 |
A
anyueling 已提交
608
| header | Object | 是 | 添加要包含在上传请求中的HTTP或HTTPS标志头。 |
609
| method | string | 是 | 请求方法:POST、PUT。缺省为POST。 |
Z
zengyawen 已提交
610
| files | Array&lt;[File](#file)&gt; | 是 | 要上传的文件列表。请使用&nbsp;multipart/form-data提交。 |
611
| data | Array&lt;[RequestData](#requestdata)&gt; | 是 | 请求的表单数据。 |
Z
zengyawen 已提交
612

A
修改  
anyueling 已提交
613
## TaskState<sup>9+</sup>
614
上传任务信息,[on('complete' | 'fail')<sup>9+</sup>](#oncomplete--fail9)[off('complete' | 'fail')<sup>9+</sup>](#offcomplete--fail9)接口的回调参数。
A
anyueling 已提交
615 616 617 618 619 620 621 622 623 624

**需要权限**:ohos.permission.INTERNET

**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Upload。

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| path | string | 是 | 文件路径 |
| responseCode | number | 是 | 上传任务返回值 |
| message | string | 是 | 上传任务结果描述信息 |
Z
zengyawen 已提交
625 626

## File
627
[UploadConfig](#uploadconfig)中的文件列表。
Z
zengyawen 已提交
628

A
anyueling 已提交
629 630
**需要权限**:ohos.permission.INTERNET

A
anyueling 已提交
631
**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download。
Z
zengyawen 已提交
632

Z
zengyawen 已提交
633
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
634
| -------- | -------- | -------- | -------- |
635 636
| filename | string | 是 | multipart提交时,请求头中的文件名。 |
| name | string | 是 | multipart提交时,表单项目的名称,缺省为file。 |
637
| uri | string | 是 | 文件的本地存储路径。<br/>仅支持"internal"协议类型,"internal://cache/"为必填字段,示例:<br/>internal://cache/path/to/file.txt |
638
| type | string | 是 | 文件的内容类型,默认根据文件名或路径的后缀获取。 |
Z
zengyawen 已提交
639 640 641


## RequestData
642
[UploadConfig](#uploadconfig)中的表单数据。
Z
zengyawen 已提交
643

A
anyueling 已提交
644
**需要权限**:ohos.permission.INTERNET
Z
zengyawen 已提交
645

A
anyueling 已提交
646
**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download。
647

Z
zengyawen 已提交
648
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
649
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
650 651
| name | string | 是 | 表示表单元素的名称。 |
| value | string | 是 | 表示表单元素的值。 |
Z
zengyawen 已提交
652

A
anyueling 已提交
653
## request.downloadFile<sup>9+</sup>
Z
zengyawen 已提交
654

A
anyueling 已提交
655
downloadFile(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
Z
zengyawen 已提交
656

657 658
下载,异步方法,使用promise形式返回结果。通过[on('complete'|'pause'|'remove')<sup>7+</sup>](#oncompletepauseremove7)可获取任务下载时的状态信息,包括任务完成、暂停或移除。通过[on('fail')<sup>7+</sup>](#onfail7)可获取任务下载时的错误信息。

Z
zengyawen 已提交
659 660 661 662 663

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

664 665 666
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
667
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
668
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
Z
zengyawen 已提交
669
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
Z
zengyawen 已提交
670

671 672 673
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
674
  | -------- | -------- |
Z
zengyawen 已提交
675
  | Promise&lt;[DownloadTask](#downloadtask)&gt; | 返回下载任务。 |
Z
zengyawen 已提交
676

A
anyueling 已提交
677
**错误码:**
678

A
anyueling 已提交
679 680 681 682
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
683 684
  | 13400001 | file operation error. |
  | 13400002 | bad file path. |
685
  | 13400003 | task service ability error. |
A
anyueling 已提交
686

687
**示例:**
A
anyueling 已提交
688

689 690
  ```ts
  let downloadTask: request.DownloadTask;
A
anyueling 已提交
691
  try {
692
    request.downloadFile(this.context, { url: 'https://xxxx/xxxx.hap' }).then((data: request.DownloadTask) => {
693
      downloadTask = data;
694
    }).catch((err: BusinessError) => {
695
      console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
A
anyueling 已提交
696 697
    })
  } catch (err) {
698
    console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
A
anyueling 已提交
699
  }
Z
zengyawen 已提交
700 701
  ```

702 703 704 705
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。

Z
zengyawen 已提交
706

A
anyueling 已提交
707
## request.downloadFile<sup>9+</sup>
Z
zengyawen 已提交
708

A
anyueling 已提交
709
downloadFile(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
Z
zengyawen 已提交
710

711 712
下载,异步方法,使用callback形式返回结果。通过[on('complete'|'pause'|'remove')<sup>7+</sup>](#oncompletepauseremove7)可获取任务下载时的状态信息,包括任务完成、暂停或移除。通过[on('fail')<sup>7+</sup>](#onfail7)可获取任务下载时的错误信息。

Z
zengyawen 已提交
713 714 715 716 717

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

718 719
**参数:**

720
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
721
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
722
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
Z
zengyawen 已提交
723
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
724
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
Z
zengyawen 已提交
725

A
anyueling 已提交
726
**错误码:**
727

A
anyueling 已提交
728 729 730 731
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
732 733
  | 13400001 | file operation error. |
  | 13400002 | bad file path. |
734
  | 13400003 | task service ability error. |
A
anyueling 已提交
735

736
**示例:**
A
anyueling 已提交
737

738 739
  ```ts
  let downloadTask: request.DownloadTask;
A
anyueling 已提交
740
  try {
741 742 743 744
    request.downloadFile(this.context, {
      url: 'https://xxxx/xxxxx.hap',
      filePath: 'xxx/xxxxx.hap'
    }, (err: BusinessError, data: request.DownloadTask) => {
745 746 747 748 749
      if (err) {
        console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
        return;
      }
      downloadTask = data;
A
anyueling 已提交
750 751
    });
  } catch (err) {
752
    console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
A
anyueling 已提交
753
  }
Z
zengyawen 已提交
754 755
  ```

756 757 758 759
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。

A
anyueling 已提交
760
## request.download<sup>(deprecated)</sup>
A
anyueling 已提交
761

A
anyueling 已提交
762
download(config: DownloadConfig): Promise&lt;DownloadTask&gt;
A
anyueling 已提交
763 764 765

下载,异步方法,使用promise形式返回结果。

A
anyueling 已提交
766 767 768
>  **说明:** 从API Version 9开始不再维护,建议使用[request.downloadFile<sup>9+</sup>](#requestdownloadfile9)替代。

**模型约束**:此接口仅可在FA模型下使用
769

A
anyueling 已提交
770 771 772 773 774 775 776 777 778 779 780 781 782 783 784
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |

**返回值:**

  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;[DownloadTask](#downloadtask)&gt; | 返回下载任务。 |
Z
zengyawen 已提交
785

A
anyueling 已提交
786
**示例:**
A
anyueling 已提交
787

A
anyueling 已提交
788 789
  ```js
  let downloadTask;
A
anyueling 已提交
790
  request.download({ url: 'https://xxxx/xxxx.hap' }).then((data) => {
791
    downloadTask = data;
A
anyueling 已提交
792
  }).catch((err) => {
793
    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
A
anyueling 已提交
794 795 796 797
  })
  ```


A
anyueling 已提交
798
## request.download<sup>(deprecated)</sup>
A
anyueling 已提交
799

A
anyueling 已提交
800
download(config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void
A
anyueling 已提交
801 802 803

下载,异步方法,使用callback形式返回结果。

A
anyueling 已提交
804 805 806
>  **说明:** 从API Version 9开始不再维护,建议使用[request.downloadFile<sup>9+</sup>](#requestdownloadfile9-1)替代。

**模型约束**:此接口仅可在FA模型下使用
807

A
anyueling 已提交
808 809 810 811 812 813
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

814
  | 参数名 | 类型 | 必填 | 说明 |
A
anyueling 已提交
815 816
  | -------- | -------- | -------- | -------- |
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
817
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
A
anyueling 已提交
818 819

**示例:**
A
anyueling 已提交
820

A
anyueling 已提交
821 822
  ```js
  let downloadTask;
A
anyueling 已提交
823
  request.download({ url: 'https://xxxx/xxxxx.hap', 
A
anyueling 已提交
824
  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
825 826 827 828 829
    if (err) {
      console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
      return;
    }
    downloadTask = data;
A
anyueling 已提交
830 831
  });
  ```
832

Z
zengyawen 已提交
833 834
## DownloadTask

A
anyueling 已提交
835
下载任务,使用下列方法前,需要先获取DownloadTask对象,promise形式通过[request.downloadFile<sup>9+</sup>](#requestdownloadfile9)获取,callback形式通过[request.downloadFile<sup>9+</sup>](#requestdownloadfile9-1)获取。
Z
zengyawen 已提交
836 837 838 839


### on('progress')

Z
zengyawen 已提交
840
on(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
841

842
订阅下载任务进度监听,同步方法,使用callback形式返回结果。
Z
zengyawen 已提交
843

844 845 846 847
> **说明:**
>
> 当应用处于后台时,为满足功耗性能要求,不支持调用此接口进行回调。

Z
zengyawen 已提交
848 849 850 851
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

852 853 854
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
855
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
856
  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
857
  | callback | function | 是 | 下载任务进度的回调函数。 |
Z
zengyawen 已提交
858 859 860

  回调函数的参数:

861 862
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
863 864
| receivedSize | number | 是 | 当前下载的进度,单位为B。 |
| totalSize | number | 是 | 下载文件的总大小,单位为B。 |
Z
zengyawen 已提交
865

866
**示例:**
A
anyueling 已提交
867

868 869
  ```ts
  let progresCallback = (receivedSize: number, totalSize: number) => {
870
    console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
871
  };
C
cy7717 已提交
872
  downloadTask.on('progress', progresCallback);
Z
zengyawen 已提交
873 874 875 876 877
  ```


### off('progress')

Z
zengyawen 已提交
878
off(type: 'progress', callback?: (receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
879

880
取消订阅下载任务进度监听,同步方法。
Z
zengyawen 已提交
881 882 883 884 885

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

886 887
**参数:**

888
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
889
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
890
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(下载的进度信息)。 |
891
  | callback | function | 否 | 需要删除的下载任务进度的回调。 <br/>receivedSize:当前下载任务的进度;<br/>totalSize:下载文件的总大小。 |
Z
zengyawen 已提交
892

893
**示例:**
A
anyueling 已提交
894

895 896
  ```ts
  let progresCallback = (receivedSize: number, totalSize: number) => {
897
    console.info('Download delete progress notification.' + 'receivedSize:' + receivedSize + 'totalSize:' + totalSize);
C
cy7717 已提交
898 899
  };
  downloadTask.off('progress', progresCallback);
Z
zengyawen 已提交
900 901 902
  ```


Z
zengyawen 已提交
903
### on('complete'|'pause'|'remove')<sup>7+</sup>
Z
zengyawen 已提交
904

Z
zengyawen 已提交
905
on(type: 'complete'|'pause'|'remove', callback:() =&gt; void): void
Z
zengyawen 已提交
906

907
订阅下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
908 909 910 911 912

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

913 914 915
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
916
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
917
  | type | string | 是 | 订阅的事件类型。<br>- 取值为'complete',表示下载任务完成;<br/>- 取值为'pause',表示下载任务暂停;<br/>- 取值为'remove',表示下载任务移除。 |
918
  | callback | function | 是 | 下载任务相关的回调函数。|
Z
zengyawen 已提交
919

920
**示例:**
A
anyueling 已提交
921

922
  ```ts
923
  let completeCallback = () => {
924
    console.info('Download task completed.');
925 926
  };
  downloadTask.on('complete', completeCallback);
C
mod  
cy7717 已提交
927 928

  let pauseCallback = () => {
929
    console.info('Download task pause.');
C
mod  
cy7717 已提交
930 931 932 933
  };
  downloadTask.on('pause', pauseCallback);

  let removeCallback = () => {
934
    console.info('Download task remove.');
C
mod  
cy7717 已提交
935 936
  };
  downloadTask.on('remove', removeCallback);
Z
zengyawen 已提交
937 938 939
  ```


Z
zengyawen 已提交
940
### off('complete'|'pause'|'remove')<sup>7+</sup>
Z
zengyawen 已提交
941

Z
zengyawen 已提交
942
off(type: 'complete'|'pause'|'remove', callback?:() =&gt; void): void
Z
zengyawen 已提交
943

944
取消订阅下载任务相关的监听,同步方法。
Z
zengyawen 已提交
945 946 947 948 949

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

950 951 952
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
953
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
954
  | type | string | 是 | 取消订阅的事件类型。<br/>- 取值为'complete',表示下载任务完成;<br/>- 取值为'pause',表示下载任务暂停;<br/>- 取值为'remove',表示下载任务移除。 |
955
  | callback | function | 否 | 需要删除的下载任务相关的回调。 |
Z
zengyawen 已提交
956

957
**示例:**
A
anyueling 已提交
958

959
  ```ts
C
cy7717 已提交
960
  let completeCallback = () => {
961
    console.info('Download delete complete notification.');
C
cy7717 已提交
962
  };
963
  downloadTask.off('complete', completeCallback);
C
mod  
cy7717 已提交
964 965

  let pauseCallback = () => {
966
    console.info('Download delete pause notification.');
C
mod  
cy7717 已提交
967 968 969 970
  };
  downloadTask.off('pause', pauseCallback);

  let removeCallback = () => {
971
    console.info('Download delete remove notification.');
C
mod  
cy7717 已提交
972 973
  };
  downloadTask.off('remove', removeCallback);
Z
zengyawen 已提交
974 975 976 977 978
  ```


### on('fail')<sup>7+</sup>

Z
zengyawen 已提交
979
on(type: 'fail', callback: (err: number) =&gt; void): void
Z
zengyawen 已提交
980

981
订阅下载任务失败监听,同步方法,使用callback形式返回结果。
Z
zengyawen 已提交
982 983 984 985 986

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

987 988 989
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
990
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
991 992
  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 是 | 下载失败的回调函数。 |
Z
zengyawen 已提交
993 994 995

  回调函数的参数:

996 997
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
998
| err | number | 是 | 下载失败的错误码,错误原因见[下载任务的错误码](#下载任务的错误码)。 |
Z
zengyawen 已提交
999

1000
**示例:**
A
anyueling 已提交
1001

1002 1003
  ```ts
  let failCallback = (err: BusinessError) => {
1004
    console.error(`Failed to download the task. Code: ${err.code}, message: ${err.message}`);
1005 1006
  };
  downloadTask.on('fail', failCallback);
Z
zengyawen 已提交
1007 1008 1009 1010 1011
  ```


### off('fail')<sup>7+</sup>

Z
zengyawen 已提交
1012
off(type: 'fail', callback?: (err: number) =&gt; void): void
Z
zengyawen 已提交
1013

1014
取消订阅下载任务失败监听,同步方法。
Z
zengyawen 已提交
1015 1016 1017 1018 1019

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1020 1021 1022
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1023
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1024
  | type | string | 是 | 取消订阅的事件类型,取值为'fail'(下载失败)。 |
1025
  | callback | function | 否 | 需要删除的下载失败的回调函数。<br/>err:下载失败的错误码。 |
Z
zengyawen 已提交
1026

1027
**示例:**
A
anyueling 已提交
1028

1029 1030
  ```ts
  let failCallback = (err: BusinessError) => {
1031
    console.error(`Failed to download the task. Code: ${err.code}, message: ${err.message}`);
C
cy7717 已提交
1032
  };
1033
  downloadTask.off('fail', failCallback);
Z
zengyawen 已提交
1034 1035
  ```

A
anyueling 已提交
1036
### delete<sup>9+</sup>
Z
zengyawen 已提交
1037

A
anyueling 已提交
1038
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1039 1040 1041 1042 1043 1044 1045

移除下载的任务,异步方法,使用promise形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1046 1047 1048
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
1049
  | -------- | -------- |
Z
zengyawen 已提交
1050
  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
Z
zengyawen 已提交
1051

1052
**示例:**
A
anyueling 已提交
1053

1054 1055
  ```ts
  downloadTask.delete().then((result: boolean) => {
1056
    console.info('Succeeded in removing the download task.');
1057
  }).catch((err: BusinessError) => {
1058
    console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
Z
zengyawen 已提交
1059 1060 1061 1062
  });
  ```


A
anyueling 已提交
1063
### delete<sup>9+</sup>
Z
zengyawen 已提交
1064

A
anyueling 已提交
1065
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
1066 1067 1068 1069 1070 1071 1072

移除下载的任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1073 1074
**参数:**

1075
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1076
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1077
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
Z
zengyawen 已提交
1078

1079
**示例:**
A
anyueling 已提交
1080

1081 1082 1083
  ```ts
  downloadTask.delete((err: BusinessError, result: boolean) => {
    if (err) {
1084 1085
      console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
      return;
1086
    }
1087
    console.info('Succeeded in removing the download task.');
Z
zengyawen 已提交
1088 1089 1090 1091
  });
  ```


A
anyueling 已提交
1092
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1093

A
anyueling 已提交
1094
getTaskInfo(): Promise&lt;DownloadInfo&gt;
Z
zengyawen 已提交
1095 1096 1097 1098 1099 1100 1101

查询下载任务,异步方法,使用promise形式返回DownloadInfo里的信息。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1102 1103 1104
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
1105
  | -------- | -------- |
Z
zengyawen 已提交
1106
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
Z
zengyawen 已提交
1107

1108
**示例:**
A
anyueling 已提交
1109

1110 1111
  ```ts
  downloadTask.getTaskInfo().then((downloadInfo: request.DownloadInfo) => {
1112
    console.info('Succeeded in querying the download task')
1113
  }).catch((err: BusinessError) => {
1114
    console.error(`Failed to query the download task. Code: ${err.code}, message: ${err.message}`)
Z
zengyawen 已提交
1115 1116 1117 1118
  });
  ```


A
anyueling 已提交
1119
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1120

A
anyueling 已提交
1121
getTaskInfo(callback: AsyncCallback&lt;DownloadInfo&gt;): void
Z
zengyawen 已提交
1122 1123 1124 1125 1126 1127 1128

查询下载的任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1129 1130
**参数:**

1131
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1132
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1133
  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
Z
zengyawen 已提交
1134

1135
**示例:**
A
anyueling 已提交
1136

1137 1138 1139
  ```ts
  downloadTask.getTaskInfo((err: BusinessError, downloadInfo: request.DownloadInfo) => {
    if (err) {
1140 1141 1142 1143
      console.error(`Failed to query the download mimeType. Code: ${err.code}, message: ${err.message}`);
    } else {
      console.info('Succeeded in querying the download mimeType');
    }
Z
zengyawen 已提交
1144 1145 1146 1147
  });
  ```


A
anyueling 已提交
1148
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1149

A
anyueling 已提交
1150
getTaskMimeType(): Promise&lt;string&gt;
Z
zengyawen 已提交
1151 1152 1153 1154 1155 1156 1157

查询下载的任务的 MimeType,异步方法,使用promise形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1158 1159 1160
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
1161
  | -------- | -------- |
Z
zengyawen 已提交
1162
  | Promise&lt;string&gt; | 查询下载任务的MimeType。 |
Z
zengyawen 已提交
1163

1164
**示例:**
A
anyueling 已提交
1165

1166 1167
  ```ts
  downloadTask.getTaskMimeType().then((data: string) => {
1168
    console.info('Succeeded in querying the download MimeType');
1169
  }).catch((err: BusinessError) => {
1170
    console.error(`Failed to query the download MimeType. Code: ${err.code}, message: ${err.message}`)
Z
zengyawen 已提交
1171 1172 1173 1174
  });
  ```


A
anyueling 已提交
1175
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1176

A
anyueling 已提交
1177
getTaskMimeType(callback: AsyncCallback&lt;string&gt;): void;
Z
zengyawen 已提交
1178 1179 1180 1181 1182 1183 1184

查询下载的任务的 MimeType,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1185 1186
**参数:**

1187
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1188
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1189
  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的MimeType的回调函数。 |
Z
zengyawen 已提交
1190

1191
**示例:**
A
anyueling 已提交
1192

1193 1194 1195
  ```ts
  downloadTask.getTaskMimeType((err: BusinessError, data: string) => {
    if (err) {
1196 1197 1198 1199
      console.error(`Failed to query the download mimeType. Code: ${err.code}, message: ${err.message}`);
    } else {
      console.info('Succeeded in querying the download mimeType');
    }
Z
zengyawen 已提交
1200 1201 1202 1203
  });
  ```


A
anyueling 已提交
1204
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1205

A
anyueling 已提交
1206
suspend(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1207 1208 1209 1210 1211 1212 1213

暂停下载任务,异步方法,使用promise形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1214 1215 1216
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
1217
  | -------- | -------- |
A
anyueling 已提交
1218
  | Promise&lt;boolean&gt; | 暂停下载任务是否成功。 |
Z
zengyawen 已提交
1219

1220
**示例:**
A
anyueling 已提交
1221

1222 1223
  ```ts
  downloadTask.suspend().then((result: boolean) => {
1224
    console.info('Succeeded in pausing the download task.');
1225
  }).catch((err: BusinessError) => {
1226
    console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
Z
zengyawen 已提交
1227 1228 1229 1230
  });
  ```


A
anyueling 已提交
1231
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1232

A
anyueling 已提交
1233
suspend(callback: AsyncCallback&lt;boolean&gt;): void
1234

Z
zengyawen 已提交
1235 1236 1237 1238 1239 1240
暂停下载任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1241 1242
**参数:**

1243
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1244
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1245
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 暂停下载任务的回调函数。 |
Z
zengyawen 已提交
1246

1247
**示例:**
A
anyueling 已提交
1248

1249 1250 1251
  ```ts
  downloadTask.suspend((err: BusinessError, result: boolean) => {
    if (err) {
1252 1253 1254
      console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    }
1255
    console.info('Succeeded in pausing the download task.');
Z
zengyawen 已提交
1256 1257 1258 1259
  });
  ```


A
anyueling 已提交
1260
### restore<sup>9+</sup>
Z
zengyawen 已提交
1261

A
anyueling 已提交
1262
restore(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1263 1264 1265 1266 1267 1268 1269

重新启动暂停的下载任务,异步方法,使用promise形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1270
**返回值:**
1271 1272

  | 类型 | 说明 |
Z
zengyawen 已提交
1273
  | -------- | -------- |
A
anyueling 已提交
1274
  | Promise&lt;boolean&gt; | 重新启动暂停的下载任务是否成功。 |
Z
zengyawen 已提交
1275

1276
**示例:**
A
anyueling 已提交
1277

1278 1279
  ```ts
  downloadTask.restore().then((result: boolean) => {
1280
    console.info('Succeeded in resuming the download task.')
1281
  }).catch((err: BusinessError) => {
1282
    console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
Z
zengyawen 已提交
1283 1284 1285 1286
  });
  ```


A
anyueling 已提交
1287
### restore<sup>9+</sup>
Z
zengyawen 已提交
1288

A
anyueling 已提交
1289
restore(callback: AsyncCallback&lt;boolean&gt;): void
1290

Z
zengyawen 已提交
1291 1292 1293 1294 1295 1296
重新启动暂停的下载任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1297 1298
**参数:**

1299
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1300
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1301
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
Z
zengyawen 已提交
1302

1303
**示例:**
A
anyueling 已提交
1304

1305 1306
  ```ts
  downloadTask.restore((err: BusinessError, result: boolean) => {
1307 1308 1309
    if (err) {
      console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
      return;
1310
    }
1311
    console.info('Succeeded in resuming the download task.');
Z
zengyawen 已提交
1312 1313 1314 1315
  });
  ```


A
anyueling 已提交
1316 1317 1318
### remove<sup>(deprecated)</sup>

remove(): Promise&lt;boolean&gt;
1319 1320 1321

移除下载的任务,异步方法,使用promise形式返回结果。

A
anyueling 已提交
1322 1323
>  **说明:** 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9-2)替代。

1324 1325 1326 1327 1328 1329
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**返回值:**

A
anyueling 已提交
1330
  | 类型 | 说明 |
1331
  | -------- | -------- |
A
anyueling 已提交
1332
  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
1333 1334 1335 1336

**示例:**

  ```js
A
anyueling 已提交
1337
  downloadTask.remove().then((result) => {
1338
    console.info('Succeeded in removing the download task.');
1339
  }).catch ((err) => {
1340
    console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
1341 1342 1343 1344
  });
  ```


A
anyueling 已提交
1345
### remove<sup>(deprecated)</sup>
1346

A
anyueling 已提交
1347
remove(callback: AsyncCallback&lt;boolean&gt;): void
1348 1349 1350

移除下载的任务,异步方法,使用callback形式返回结果。

A
anyueling 已提交
1351 1352
>  **说明:** 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9-3)替代。

1353 1354 1355 1356 1357 1358
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

A
anyueling 已提交
1359
  | 参数名 | 类型 | 必填 | 说明 |
1360
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1361
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
1362 1363 1364 1365

**示例:**

  ```js
A
anyueling 已提交
1366
  downloadTask.remove((err, result)=>{
1367 1368 1369
    if(err) {
      console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
      return;
1370 1371
    }
    console.info('Succeeded in removing the download task.');
1372 1373 1374 1375
  });
  ```


A
anyueling 已提交
1376
### query<sup>(deprecated)</sup>
1377

A
anyueling 已提交
1378
query(): Promise&lt;DownloadInfo&gt;
1379 1380 1381

查询下载任务,异步方法,使用promise形式返回DownloadInfo里的信息。

A
anyueling 已提交
1382 1383
>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskInfo<sup>9+</sup>](#gettaskinfo9)替代。

1384 1385 1386 1387
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1388 1389
**返回值:**

A
anyueling 已提交
1390 1391 1392
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
1393 1394 1395 1396

**示例:**

  ```js
A
anyueling 已提交
1397
  downloadTask.query().then((downloadInfo) => {    
1398
    console.info('Succeeded in querying the download task.')
1399
  }) .catch((err) => {
1400
    console.error(`Failed to query the download task. Code: ${err.code}, message: ${err.message}`)
1401 1402 1403 1404
  });
  ```


A
anyueling 已提交
1405
### query<sup>(deprecated)</sup>
1406

A
anyueling 已提交
1407
query(callback: AsyncCallback&lt;DownloadInfo&gt;): void
1408 1409 1410

查询下载的任务,异步方法,使用callback形式返回结果。

A
anyueling 已提交
1411 1412
>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskInfo<sup>9+</sup>](#gettaskinfo9-1)替代。

1413 1414 1415 1416 1417 1418
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

A
anyueling 已提交
1419
  | 参数名 | 类型 | 必填 | 说明 |
1420
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1421
  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
1422 1423 1424 1425

**示例:**

  ```js
A
anyueling 已提交
1426
  downloadTask.query((err, downloadInfo)=>{
1427 1428 1429 1430 1431
    if(err) {
      console.error(`Failed to query the download mimeType. Code: ${err.code}, message: ${err.message}`);
    } else {
      console.info('Succeeded in querying the download task.');
    }
1432 1433 1434 1435
  });
  ```


A
anyueling 已提交
1436
### queryMimeType<sup>(deprecated)</sup>
1437

A
anyueling 已提交
1438
queryMimeType(): Promise&lt;string&gt;
1439 1440 1441

查询下载的任务的 MimeType,异步方法,使用promise形式返回结果。

A
anyueling 已提交
1442 1443
>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskMimeType<sup>9+</sup>](#gettaskmimetype9)替代。

1444 1445 1446 1447 1448 1449
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**返回值:**

A
anyueling 已提交
1450
  | 类型 | 说明 |
1451
  | -------- | -------- |
A
anyueling 已提交
1452
  | Promise&lt;string&gt; | 查询下载任务的MimeType。 |
1453 1454 1455 1456

**示例:**

  ```js
A
anyueling 已提交
1457
  downloadTask.queryMimeType().then((data) => {    
1458
    console.info('Succeededto in querying the download MimeType.');
1459
  }).catch((err) => {
1460
    console.error(`Failed to query the download MimeType. Code: ${err.code}, message: ${err.message}`)
1461 1462 1463 1464
  });
  ```


A
anyueling 已提交
1465
### queryMimeType<sup>(deprecated)</sup>
1466

A
anyueling 已提交
1467
queryMimeType(callback: AsyncCallback&lt;string&gt;): void;
1468 1469 1470

查询下载的任务的 MimeType,异步方法,使用callback形式返回结果。

A
anyueling 已提交
1471 1472
>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskMimeType<sup>9+</sup>](#gettaskmimetype9-1)替代。

1473 1474 1475 1476 1477 1478
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

A
anyueling 已提交
1479
  | 参数名 | 类型 | 必填 | 说明 |
1480
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1481
  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的MimeType的回调函数。 |
1482 1483 1484 1485

**示例:**

  ```js
A
anyueling 已提交
1486
  downloadTask.queryMimeType((err, data)=>{
1487 1488 1489 1490 1491
    if(err) {
      console.error(`Failed to query the download mimeType. Code: ${err.code}, message: ${err.message}`);
    } else {
      console.info('Succeeded in querying the download mimeType.');
    }
1492 1493 1494 1495
  });
  ```


A
anyueling 已提交
1496
### pause<sup>(deprecated)</sup>
1497

A
anyueling 已提交
1498
pause(): Promise&lt;void&gt;
1499 1500 1501

暂停下载任务,异步方法,使用promise形式返回结果。

A
anyueling 已提交
1502 1503
>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9)替代。

1504 1505 1506 1507 1508 1509
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**返回值:**

A
anyueling 已提交
1510
  | 类型 | 说明 |
1511
  | -------- | -------- |
A
anyueling 已提交
1512
  | Promise&lt;void&gt; | 暂停下载任务是否成功。 |
1513 1514 1515 1516

**示例:**

  ```js
A
anyueling 已提交
1517
  downloadTask.pause().then((result) => {    
1518
    console.info('Succeeded in pausing the download task.');
1519
  }).catch((err) => {
1520
    console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
1521 1522 1523 1524
  });
  ```


A
anyueling 已提交
1525
### pause<sup>(deprecated)</sup>
1526

A
anyueling 已提交
1527 1528 1529
pause(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9-1)替代。
1530 1531 1532 1533 1534 1535 1536 1537 1538

暂停下载任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

A
anyueling 已提交
1539
  | 参数名 | 类型 | 必填 | 说明 |
1540
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1541
  | callback | AsyncCallback&lt;void&gt; | 是 | 暂停下载任务的回调函数。 |
1542 1543 1544 1545

**示例:**

  ```js
A
anyueling 已提交
1546
  downloadTask.pause((err, result)=>{
1547 1548 1549 1550
    if(err) {
      console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    }
1551
    console.info('Succeeded in pausing the download task.');
1552 1553 1554 1555
  });
  ```


A
anyueling 已提交
1556
### resume<sup>(deprecated)</sup>
1557

A
anyueling 已提交
1558
resume(): Promise&lt;void&gt;
1559 1560 1561

重新启动暂停的下载任务,异步方法,使用promise形式返回结果。

A
anyueling 已提交
1562 1563
>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9)替代。

1564 1565 1566 1567
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1568
**返回值:**
1569

A
anyueling 已提交
1570
  | 类型 | 说明 |
1571
  | -------- | -------- |
A
anyueling 已提交
1572
  | Promise&lt;void&gt; | 重新启动暂停的下载任务是否成功。 |
1573 1574 1575 1576

**示例:**

  ```js
A
anyueling 已提交
1577
  downloadTask.resume().then((result) => {
1578
    console.info('Succeeded in resuming the download task.')
1579
  }).catch((err) => {
1580
    console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
1581 1582 1583 1584
  });
  ```


A
anyueling 已提交
1585
### resume<sup>(deprecated)</sup>
1586

A
anyueling 已提交
1587 1588 1589
resume(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9-1)替代。
1590 1591 1592 1593 1594 1595 1596 1597 1598

重新启动暂停的下载任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

A
anyueling 已提交
1599
  | 参数名 | 类型 | 必填 | 说明 |
1600
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1601
  | callback | AsyncCallback&lt;void&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
1602 1603 1604 1605

**示例:**

  ```js
A
anyueling 已提交
1606
  downloadTask.resume((err, result)=>{
1607 1608 1609 1610
    if (err) {
      console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    }
1611
    console.info('Succeeded in resuming the download task.');
1612 1613 1614 1615
  });
  ```


Z
zengyawen 已提交
1616
## DownloadConfig
1617
下载任务的配置信息。
Z
zengyawen 已提交
1618

A
anyueling 已提交
1619 1620
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1621 1622 1623 1624 1625
**系统能力**: SystemCapability.MiscServices.Download

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| url | string | 是 | 资源地址。 |
1626
| header | Object | 否 | 添加要包含在下载请求中的HTTPS标志头。<br/>开发者可以通过header的X-TLS-Version参数指定需要使用的TLS版本(如果不指定,则默认使用CURL_SSLVERSION_TLSv1_2版本,指定则使用指定版本。)<br/>CURL_SSLVERSION_TLSv1_0<br/>CURL_SSLVERSION_TLSv1_1<br/>CURL_SSLVERSION_TLSv1_2<br/>CURL_SSLVERSION_TLSv1_3<br/>通过header的X-Cipher-List参数指定需要使用的密码套件(如果不指定,则默认使用安全密码套件,指定则使用指定密码套件。)<br/>-1.2允许使用的密码套件白名单:<br/>TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,<br/>TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_DSS_RSA_WITH_AES_256_GCM_SHA384,<br/>TLS_PSK_WITH_AES_256_GCM_SHA384,TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,<br/>TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256,<br/>TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,<br/>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,<br/>TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256,<br/>TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256,TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384,<br/>TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_CCM,<br/>TLS_DHE_RSA_WITH_AES_256_CCM,TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256,<br/>TLS_PSK_WITH_AES_256_CCM,TLS_DHE_PSK_WITH_AES_128_CCM,<br/>TLS_DHE_PSK_WITH_AES_256_CCM,TLS_ECDHE_ECDSA_WITH_AES_128_CCM,<br/>TLS_ECDHE_ECDSA_WITH_AES_256_CCM,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256<br/>-1.3允许使用的密码套件白名单:<br/>TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_CCM_SHA256<br/>-1.3新增国密算法套:<br/>TLS_SM4_GCM_SM3,TLS_SM4_CCM_SM3 |
1627
| enableMetered | boolean | 否 | 设置是否允许在按流量计费的连接下下载(默认使用false)。Wi-Fi为非计费网络,数据流量为计费网络。<br/>-&nbsp;true:是<br/>-&nbsp;false:否 |
1628
| enableRoaming | boolean | 否 | 设置是否允许在漫游网络中下载(默认使用false)。 <br/>-&nbsp;true:是<br/>-&nbsp;false:否|
Z
zengyawen 已提交
1629
| description | string | 否 | 设置下载会话的描述。 |
1630
| filePath<sup>7+</sup> | string | 否 | 设置下载路径。<br/>-&nbsp;FA模型下使用[context](js-apis-inner-app-context.md#contextgetcachedir) 获取应用存储路径,比如:\`${featureAbility.getContext().getFilesDir()}/test.txt\`,并将文件存储在此路径下。<br/>-&nbsp;Stage模型下使用[AbilityContext](js-apis-inner-application-context.md) 类获取文件路径,比如:\`${globalThis.abilityContext.tempDir}/test.txt\`,并将文件存储在此路径下。|
1631
| networkType | number | 否 | 设置允许下载的网络类型(默认使用NETWORK_MOBILE&NETWORK_WIFI)。<br/>-&nbsp;NETWORK_MOBILE:0x00000001<br/>-&nbsp;NETWORK_WIFI:0x00010000|
A
anyueling 已提交
1632
| title | string | 否 | 设置下载任务名称。 |
1633
| background<sup>9+</sup> | boolean | 否 | 后台任务通知开关,开启后可在通知中显示下载状态(默认使用false)。 |
Z
zengyawen 已提交
1634 1635


Z
zengyawen 已提交
1636
## DownloadInfo<sup>7+</sup>
1637
下载任务信息,[getTaskInfo<sup>9+</sup>](#gettaskinfo9)接口的回调参数。
Z
zengyawen 已提交
1638

A
anyueling 已提交
1639 1640
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1641 1642
**系统能力**: SystemCapability.MiscServices.Download

1643
| 名称 | 类型 |必填 |  说明 |
1644
| -------- | -------- | -------- | -------- |
1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655
| downloadId | number |是 | 下载任务ID。 |
| failedReason | number|是 | 下载失败原因,可以是任何[下载任务的错误码](#下载任务的错误码)常量。 |
| fileName | string |是| 下载的文件名。 |
| filePath | string |是| 存储文件的URI。 |
| pausedReason | number |是| 会话暂停的原因,可以是任何[下载任务暂停原因](#下载任务暂停原因)常量。 |
| status | number |是| 下载状态码,可以是任何[下载任务状态码](#下载任务状态码)常量。 |
| targetURI | string |是| 下载文件的URI。 |
| downloadTitle | string |是| 下载任务名称。 |
| downloadTotalBytes | number |是| 下载的文件的总大小(int&nbsp;bytes)。 |
| description | string |是| 待下载任务的描述信息。 |
| downloadedBytes | number |是| 实时下载大小(int&nbsp;&nbsp;bytes)。 |
1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714

## Action<sup>10+</sup>  

定义操作选项。

**系统能力**: SystemCapability.Request.FileTransferAgent

| 名称 | 值 |说明 |
| -------- | -------- |-------- |
| DOWNLOAD | 0 |表示下载任务。 |
| UPLOAD | 1 |表示上传任务。 |


## Mode<sup>10+</sup>  
定义模式选项。

**系统能力**: SystemCapability.Request.FileTransferAgent

| 名称 | 值 |说明 |
| -------- | -------- |-------- |
| BACKGROUND | 0 |表示后台任务。 |
| FOREGROUND | 1 |表示前端任务。 |

## Network<sup>10+</sup>  

定义网络选项。

**系统能力**: SystemCapability.Request.FileTransferAgent

| 名称 | 值 |说明 |
| -------- | -------- |-------- |
| ANY | 0 |表示不限网络类型。 |
| WIFI | 1 |表示无线网络。 |
| CELLULAR | 2 |表示蜂窝数据网络。 |

## FileSpec<sup>10+</sup> 
表单项的文件信息。

**系统能力**: SystemCapability.Request.FileTransferAgent

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| path | string | 是 | 文件路径,包括如下两种:<br/>- 位于调用方的缓存文件夹下的相对路径。<br/>- 具备访问uri路径权限的应用可使用的uri路径。 |
| mimeType | string | 否 | 文件的mimetype,默认值包括如下两种:<br/>- 上传时,通过文件名或uri的后缀获得。<br/>- 下载时,响应时为"Content-Type",不响应为"octet-stream"。 |
| filename | string | 否 | 文件名,默认值通过路径获取。 |
| extras | Object | 否 | 文件信息的附加内容。 |


## FormItem<sup>10+</sup> 
任务的表单项信息。

**系统能力**: SystemCapability.Request.FileTransferAgent

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name | string | 是 | 表单参数名。 |
| value | string \| [FileSpec](#filespec10) \| Array&lt;[FileSpec](#filespec10)&gt; | 是 | 表单参数值。 |


1715
## Config<sup>10+</sup> 
1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730
上传/下载任务的配置信息。

**系统能力**: SystemCapability.Request.FileTransferAgent

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| action | [Action](#action10) | 是 | 任务操作选项。<br/>-UPLOAD表示上传任务。<br/>-DOWNLOAD表示下载任务。 |
| url | string | 是 | 资源地址,其最大长度为2048个字符。 |
| title | string | 否 | 任务标题,其最大长度为256个字符,默认值为空。 |
| description | string | 否 | 任务的详细信息,其最大长度为1024个字符,默认值为空字符串。 |
| mode | [Mode](#mode10) | 否 | 任务模式,默认为后台任务。<br/>-对于前端任务,有回调通知。<br/>-对于后台任务,有系统通知、检测网络连接、恢复、自动重试功能。 |
| overwrite | boolean | 否 | 下载过程中路径已存在时的解决方案选择,默认为false。<br/>- true,覆盖已存在的文件。<br/>- false,下载失败。 |
| method | string | 否 | 上传或下载的HTTP标准方法,包括GET、POST和PUT,不区分大小写。<br/>-上传时,使用PUT或POST,默认值为PUT。<br/>-下载时,使用GET或POST,默认值为GET。 |
| headers | object | 否 | 添加要包含在任务中的HTTPS标志头。<br/>-对于上传请求,默认的Content-Type为"multipart/form-data"。<br/>-对于下载请求,默认的Content-Type为"application/json"。 |
| data | string \| Array&lt;[FormItem](#formitem10)&gt; | 否 | -下载时,data为字符串类型,通常使用json(object将被转换为json文本),默认为空。<br/>-上传时,data是表单项数组Array&lt;[FormItem](#formitem10)&gt;,默认为空。 |
1731
| saveas | string | 否 | 保存下载文件的路径,包括如下两种:<br/>-相对路径,如"./xxx/yyy/zzz.html"、"xxx/yyy/zzz.html",位于调用方的缓存路径下。<br/>-uri路径,如"datashare://bundle/xxx/yyy/zzz.html",仅对具有访问url路径权限的应用开放。该功能暂不支持。<br/>默认为相对路径,即下载至应用当前缓存路径下。 |
1732
| network | [Network](#network10) | 否 | 网络选项,当前支持无线网络WIFI和蜂窝数据网络CELLULAR,默认为ANY(WIFI或CELLULAR)。 |
1733 1734 1735 1736
| metered | boolean | 否 | 是否允许在按流量计费的网络中工作,默认为false。<br/>-true:是 <br/>-false:否|
| roaming | boolean | 否 | 是否允许在漫游网络中工作,默认为true。<br/>-true:是 <br/>-false:否 |
| retry | boolean | 否 | 是否为后台任务启用自动重试,仅应用于后台任务,默认为true。<br/>-true:是 <br/>-false:否 |
| redirect | boolean | 否 | 是否允许重定向,默认为true。<br/>-true:是 <br/>-false:否 |
1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752
| index | number | 否 | 任务的路径索引,通常用于任务断点续传,默认为0。 |
| begins | number | 否 | 文件起点,通常用于断点续传。默认值为0,取值为闭区间。<br/>-下载时,请求读取服务器开始下载文件时的起点位置(http协议中设置"Range"选项)。<br/>-上传时,在上传开始时读取。 |
| ends | number | 否 | 文件终点,通常用于断点续传。默认值为-1,取值为闭区间。<br/>-下载时,请求读取服务器开始下载文件时的结束位置(http协议中设置"Range"选项)。<br/>-上传时,在上传时结束读取。 |
| gauge | boolean | 否 | 后台任务的过程进度通知策略,仅应用于后台任务,默认值为false。<br/>-false:代表仅完成或失败的通知。<br/>-true,发出每个进度已完成或失败的通知。 |
| precise | boolean | 否 | -如果设置为true,在上传/下载无法获取文件大小时任务失败。<br/>-如果设置为false,将文件大小设置为-1时任务继续。<br/>默认值为false。 |
| token | string | 否 | 当创建了一个带有token的任务后,token则为正常查询期间必须提供的,否则将无法通过查询进行检索。其最小为8个字节,最大为2048个字节。默认为空。 |
| extras | object | 否 | 配置的附加功能,默认为空。 |

## State<sup>10+</sup>  

定义任务当前的状态。

**系统能力**: SystemCapability.Request.FileTransferAgent

| 名称 | 值 |说明 |
| -------- | -------- |-------- |
1753
| INITIALIZED | 0x00 |通过配置信息([Config](#config10))创建初始化任务。 |
1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777
| WAITING | 0x10 |表示任务缺少运行或重试的资源与网络状态不匹配。 |
| RUNNING | 0x20 |表示正在处理的任务。 |
| RETRYING | 0x21 |表示任务至少失败一次,现在正在再次处理中。 |
| PAUSED | 0x30 |表示任务暂停,通常后续会恢复任务。 |
| STOPPED | 0x31 |表示任务停止。 |
| COMPLETED | 0x40 |表示任务完成。 |
| FAILED | 0x41 |表示任务失败。 |
| REMOVED | 0x50 |表示任务移除。 |


## Progress<sup>10+</sup> 
任务进度的数据结构。

**系统能力**: SystemCapability.Request.FileTransferAgent

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| state | [State](#state10) | 是 | 任务当前的状态。 |
| index | number | 是 | 任务中当前正在处理的文件索引。 |
| processed | number | 是 | 任务中当前文件的已处理数据大小,单位为B。|
| sizes | Array&lt;number&gt; | 是 | 任务中文件的大小,单位为B。 |
| extras | object | 否 | 交互的额外内容,例如来自服务器的响应的header和body。 |


1778
## Faults<sup>10+</sup>  
1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792

定义任务失败的原因。

**系统能力**: SystemCapability.Request.FileTransferAgent

| 名称 | 值 |说明 |
| -------- | -------- |-------- |
| OTHERS | 0xFF |表示其他故障。 |
| DISCONNECTED | 0x00 |表示网络断开连接。 |
| TIMEOUT | 0x10 |表示任务超时。 |
| PROTOCOL | 0x20 |表示协议错误,例如:服务器内部错误(500)、无法处理的数据区间(416)等。 |
| FSIO | 0x40 |表示文件系统io错误,例如打开/查找/读取/写入/关闭。 |


1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806
## Filter<sup>10+</sup>
过滤条件。

**系统能力**: SystemCapability.Request.FileTransferAgent

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| bundle | string | 否 | 指定应用程序的包名,仅对系统应用开放。<br/>**系统接口**:此接口为系统接口。 |
| before | number | 否 | 结束的Unix时间戳(毫秒),默认为调用时刻。 |
| after | number | 否 | 开始的Unix时间戳(毫秒),默认值为调用时刻减24小时。 |
| state | [State](#state10) | 否 | 指定任务的状态。 |
| action | [Action](#action10) | 否 | 任务操作选项。<br/>-UPLOAD表示上传任务。<br/>-DOWNLOAD表示下载任务。 |
| mode | [Mode](#mode10) | 否 | 任务模式。<br/>-FOREGROUND表示前端任务。<br/>-BACKGROUND表示后台任务。 |

1807
## TaskInfo<sup>10+</sup> 
1808
查询结果的任务信息数据结构,提供普通查询和系统查询,两种字段的可见范围不同。
1809 1810 1811 1812 1813 1814 1815

**系统能力**: SystemCapability.Request.FileTransferAgent

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| uid | string | 否 | 应用程序的UID,仅用于系统查询。<br/>**系统接口**:此接口为系统接口。|
| bundle | string | 否 | 应用程序的包名,仅用于系统查询。<br/>**系统接口**:此接口为系统接口。|
1816 1817 1818
| saveas | string | 否 | 保存下载文件的路径,包括如下两种:<br/>-相对路径,如"./xxx/yyy/zzz.html"、"xxx/yyy/zzz.html",位于调用方的缓存路径下。<br/>-uri路径,如"datashare://bundle/xxx/yyy/zzz.html",仅对具有访问url路径权限的应用开放。该功能暂不支持。<br/>默认为相对路径,即下载至应用当前缓存路径下。|
| url | string | 否 | 任务的url。<br/>- 通过[request.agent.show<sup>10+</sup>](#requestagentshow10-1)[request.agent.touch<sup>10+</sup>](#requestagenttouch10-1)[request.agent.query<sup>10+</sup>](#requestagentquery10-1)进行查询。其中,使用[request.agent.query<sup>10+</sup>](#requestagentquery10-1)进行查询时会返回空字符串。 |
| data | string \| Array&lt;[FormItem](#formitem10)&gt; | 否 | 任务值。<br/>- 通过[request.agent.show<sup>10+</sup>](#requestagentshow10-1)[request.agent.touch<sup>10+</sup>](#requestagenttouch10-1)[request.agent.query<sup>10+</sup>](#requestagentquery10-1)进行查询。其中,使用[request.agent.query<sup>10+</sup>](#requestagentquery10-1)进行查询时会返回空字符串。 |
1819 1820 1821 1822 1823 1824 1825 1826
| tid | string | 是 | 任务id。 |
| title | string | 是 | 任务标题。 |
| description | string | 是 | 任务描述。 |
| action | [Action](#action10) | 是 | 任务操作选项。<br/>-UPLOAD表示上传任务。<br/>-DOWNLOAD表示下载任务。 |
| mode | [Mode](#mode10) | 是 | 指定任务模式。<br/>-FOREGROUND表示前端任务。<br/>-BACKGROUND表示后台任务。 |
| mimeType | string | 是 | 任务配置中的mimetype。 |
| progress | [Progress](#progress10) | 是 | 任务的过程进度。 |
| gauge | boolean | 是 | 后台任务的进度通知策略。 |
1827 1828
| ctime | number | 是 | 创建任务的Unix时间戳(毫秒),由当前设备的系统生成。<br/>说明:使用[request.agent.search<sup>10+</sup>](#requestagentsearch10-1)进行查询时,该值需处于[after,before]区间内才可正常查询到任务id,before和after信息详见[Filter](#filter10)
| mtime | number | 是 | 任务状态改变时的Unix时间戳(毫秒),由当前设备的系统生成。|
1829 1830
| retry | boolean | 是 | 任务的重试开关,仅应用于后台任务。 |
| tries | number | 是 | 任务的尝试次数。 |
1831
| faults | [Faults](#faults10) | 是 | 任务的失败原因。<br/>-OTHERS表示其他故障。<br/>-DISCONNECT表示网络断开连接。<br/>-TIMEOUT表示任务超时。<br/>-PROTOCOL表示协议错误。<br/>-FSIO表示文件系统io错误。|
1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846
| reason | string | 是 | 等待/失败/停止/暂停任务的原因。|
| extras | string | 否 | 任务的额外部分。|


## Task<sup>10+</sup> 
上传或下载任务。使用该方法前需要先获取Task对象,promise形式通过[request.agent.create<sup>10+</sup>](#requestagentcreate10-1)获取,callback形式通过[request.agent.create<sup>10+</sup>](#requestagentcreate10)获取。

### 属性
包括任务id和任务的配置信息。

**系统能力**: SystemCapability.Request.FileTransferAgent

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| tid | string | 是 | 任务id,在系统上是唯一的,由系统自动生成。 |
1847
| config | [Config](#config10) | 是 | 任务的配置信息。 |
1848 1849


1850
### on('progress')<sup>10+</sup>
1851

1852
on(event: 'progress', callback: (progress: Progress) =&gt; void): void
1853

1854
订阅前端任务进度的监听。
1855 1856 1857 1858 1859 1860 1861

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
1862 1863
  | event | string | 是 | 订阅的事件类型。<br>- 取值为'progress',表示任务进度。 |
  | callback | function | 是 | 发生相关的事件时触发该回调方法,返回任务进度的数据结构。|
1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 21900005 | task mode error. |

**示例:**

1875 1876 1877 1878 1879 1880 1881 1882 1883 1884
  ```ts
  let attachments: Array<request.agent.FormItem> = [{
    name: "taskOnTest",
    value: {
      filename: "taskOnTest.avi",
      mimeType: "application/octet-stream",
      path: "./taskOnTest.avi",
    }
  }];
  let config: request.agent.Config = {
1885 1886 1887 1888
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'taskOnTest',
    description: 'Sample code for event listening',
1889
    mode: request.agent.Mode.FOREGROUND,
1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905
    overwrite: false,
    method: "PUT",
    data: attachments,
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
1906 1907
  let createOnCallback = (progress: request.agent.Progress) => {
    console.info('upload task progress.');
1908
  };
1909
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
1910
    task.on('progress', createOnCallback);
1911
    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
1912
  }).catch((err: BusinessError) => {
1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924
    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
  });
  ```

> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。

### on('completed')<sup>10+</sup>

on(event: 'completed', callback: (progress: Progress) =&gt; void): void

1925
订阅前端任务完成的监听。
1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | event | string | 是 | 订阅的事件类型。<br>- 取值为'completed',表示任务完成。 |
  | callback | function | 是 | 发生相关的事件时触发该回调方法,返回任务进度的数据结构。 |

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 21900005 | task mode error. |

**示例:**

1946 1947 1948 1949 1950 1951 1952 1953 1954 1955
  ```ts
  let attachments: Array<request.agent.FormItem> = [{
    name: "taskOnTest",
    value: {
      filename: "taskOnTest.avi",
      mimeType: "application/octet-stream",
      path: "./taskOnTest.avi",
    }
  }];
  let config: request.agent.Config = {
1956 1957 1958 1959
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'taskOnTest',
    description: 'Sample code for event listening',
1960
    mode: request.agent.Mode.FOREGROUND,
1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976
    overwrite: false,
    method: "PUT",
    data: attachments,
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
1977
  let createOnCallback = (progress: request.agent.Progress) => {
1978 1979
    console.info('upload task completed.');
  };
1980
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
1981
    task.on('completed', createOnCallback);
1982
    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
1983
  }).catch((err: BusinessError) => {
1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995
    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
  });
  ```

> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。

### on('failed')<sup>10+</sup>

on(event: 'failed', callback: (progress: Progress) =&gt; void): void

1996
订阅前端任务失败的监听。
1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | event | string | 是 | 订阅的事件类型。<br>- 取值为'failed',表示任务失败。 |
  | callback | function | 是 | 发生相关的事件时触发该回调方法,返回任务进度的数据结构。 |

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 21900005 | task mode error. |

**示例:**

2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
  ```ts
  let attachments: Array<request.agent.FormItem> = [{
    name: "taskOnTest",
    value: {
      filename: "taskOnTest.avi",
      mimeType: "application/octet-stream",
      path: "./taskOnTest.avi",
    }
  }];
  let config: request.agent.Config = {
2027 2028 2029 2030
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'taskOnTest',
    description: 'Sample code for event listening',
2031
    mode: request.agent.Mode.FOREGROUND,
2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047
    overwrite: false,
    method: "PUT",
    data: attachments,
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2048 2049
  let createOnCallback = (progress: request.agent.Progress) => {
    console.info('upload task failed.');
2050
  };
2051
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
2052
    task.on('failed', createOnCallback);
2053
    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
2054
  }).catch((err: BusinessError) => {
2055
    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
2056 2057 2058
  });
  ```

2059 2060 2061
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2062 2063


2064 2065 2066
### off('progress')<sup>10+</sup>

off(event: 'progress', callback?: (progress: Progress) =&gt; void): void
2067

2068
取消订阅前端任务进度的监听。
2069 2070 2071 2072 2073 2074 2075

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
2076 2077
  | event | string | 是 | 订阅的事件类型。<br>- 取值为'progress',表示任务进度。 |
  | callback | function | 否 | 发生相关的事件时触发该回调方法,返回任务进度的数据结构。 |
2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 21900005 | task mode error. |

**示例:**

2089 2090 2091 2092 2093 2094 2095 2096 2097 2098
  ```ts
  let attachments: Array<request.agent.FormItem> = [{
    name: "taskOffTest",
    value: {
      filename: "taskOffTest.avi",
      mimeType: "application/octet-stream",
      path: "./taskOffTest.avi",
    }
  }];
  let config: request.agent.Config = {
2099 2100 2101 2102
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'taskOffTest',
    description: 'Sample code for event listening',
2103
    mode: request.agent.Mode.FOREGROUND,
2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119
    overwrite: false,
    method: "PUT",
    data: attachments,
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2120 2121
  let createOffCallback = (progress: request.agent.Progress) => {
    console.info('upload task progress.');
2122
  };
2123
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
2124 2125
    task.on('progress', createOffCallback);
    task.off('progress', createOffCallback);
2126
    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
2127
  }).catch((err: BusinessError) => {
2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139
    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
  });
  ```

> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。

### off('completed')<sup>10+</sup>

off(event: 'completed', callback?: (progress: Progress) =&gt; void): void

2140
取消订阅前端任务完成的监听。
2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | event | string | 是 | 订阅的事件类型。<br>- 取值为'completed',表示任务完成。 |
  | callback | function | 否 | 发生相关的事件时触发该回调方法,返回任务进度的数据结构。 |

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 21900005 | task mode error. |

**示例:**

2161 2162 2163 2164 2165 2166 2167 2168 2169 2170
  ```ts
  let attachments: Array<request.agent.FormItem> = [{
    name: "taskOffTest",
    value: {
      filename: "taskOffTest.avi",
      mimeType: "application/octet-stream",
      path: "./taskOffTest.avi",
    }
  }];
  let config: request.agent.Config = {
2171 2172 2173 2174
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'taskOffTest',
    description: 'Sample code for event listening',
2175
    mode: request.agent.Mode.FOREGROUND,
2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191
    overwrite: false,
    method: "PUT",
    data: attachments,
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2192
  let createOffCallback = (progress: request.agent.Progress) => {
2193 2194
    console.info('upload task completed.');
  };
2195
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
2196
    task.on('completed', createOffCallback);
2197
    task.off('completed', createOffCallback);
2198
    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
2199
  }).catch((err: BusinessError) => {
2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211
    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
  });
  ```

> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。

### off('failed')<sup>10+</sup>

off(event: 'failed', callback?: (progress: Progress) =&gt; void): void

2212
取消订阅前端任务失败的监听。
2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | event | string | 是 | 订阅的事件类型。<br>- 取值为'failed',表示任务失败。 |
  | callback | function | 否 | 发生相关的事件时触发该回调方法,返回任务进度的数据结构。 |

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 21900005 | task mode error. |

**示例:**

2233 2234 2235 2236 2237 2238 2239 2240 2241 2242
  ```ts
  let attachments: Array<request.agent.FormItem> = [{
    name: "taskOffTest",
    value: {
      filename: "taskOffTest.avi",
      mimeType: "application/octet-stream",
      path: "./taskOffTest.avi",
    }
  }];
  let config: request.agent.Config = {
2243 2244 2245 2246
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'taskOffTest',
    description: 'Sample code for event listening',
2247
    mode: request.agent.Mode.FOREGROUND,
2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263
    overwrite: false,
    method: "PUT",
    data: attachments,
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2264 2265
  let createOffCallback = (progress: request.agent.Progress) => {
    console.info('upload task failed.');
2266
  };
2267
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
2268
    task.on('failed', createOffCallback);
2269
    task.off('failed', createOffCallback);
2270
    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
2271
  }).catch((err: BusinessError) => {
2272
    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
2273 2274 2275
  });
  ```

2276 2277 2278
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293

### start<sup>10+</sup>

start(callback: AsyncCallback&lt;void&gt;): void

启动任务,无法启动已初始化的任务。使用callback异步回调。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
2294
  | callback | function | 是 | 回调函数,开启任务成功,err为undefined,否则为错误对象。 |
2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900007 | task state error. |

**示例:**

2307 2308
  ```ts
  let config: request.agent.Config = {
2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329
    action: request.agent.Action.DOWNLOAD,
    url: 'http://127.0.0.1',
    title: 'taskStartTest',
    description: 'Sample code for start the download task',
    mode: request.agent.Mode.BACKGROUND,
    overwrite: false,
    method: "GET",
    data: "",
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2330 2331
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
    task.start((err: BusinessError) => {
2332
      if (err) {
2333
        console.error(`Failed to start the download task, Code: ${err.code}, message: ${err.message}`);
2334 2335
        return;
      }
2336 2337 2338
      console.info(`Succeeded in starting a download task.`);
    });
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2339
  }).catch((err: BusinessError) => {
2340
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2341 2342 2343
  });
  ```

2344 2345 2346
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374

### start<sup>10+</sup>

start(): Promise&lt;void&gt;

启动任务,无法启动已初始化的任务。使用Promise异步回调。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.Request.FileTransferAgent

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900007 | task state error. |

**示例:**

2375 2376
  ```ts
  let config: request.agent.Config = {
2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397
    action: request.agent.Action.DOWNLOAD,
    url: 'http://127.0.0.1',
    title: 'taskStartTest',
    description: 'Sample code for start the download task',
    mode: request.agent.Mode.BACKGROUND,
    overwrite: false,
    method: "GET",
    data: "",
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2398
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
2399
    task.start().then(() => {
2400
      console.info(`Succeeded in starting a download task.`);
2401
    }).catch((err: BusinessError) => {
2402
      console.error(`Failed to start the download task, Code: ${err.code}, message: ${err.message}`);
2403
    });
2404
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2405
  }).catch((err: BusinessError) => {
2406
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2407 2408 2409
  });
  ```

2410 2411 2412
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425

### pause<sup>10+</sup>

pause(callback: AsyncCallback&lt;void&gt;): void

暂停任务,可以暂停正在等待/正在运行/正在重试的后台任务。使用callback异步回调。

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
2426
  | callback | function | 是 | 回调函数,暂停任务成功,err为undefined,否则为错误对象。 |
2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900005 | task mode error. |
  | 21900007 | task state error. |

**示例:**

2440 2441
  ```ts
  let config: request.agent.Config = {
2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462
    action: request.agent.Action.DOWNLOAD,
    url: 'http://127.0.0.1',
    title: 'taskPauseTest',
    description: 'Sample code for pause the download task',
    mode: request.agent.Mode.BACKGROUND,
    overwrite: false,
    method: "GET",
    data: "",
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2463 2464
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
    task.pause((err: BusinessError) => {
2465
      if (err) {
2466
        console.error(`Failed to pause the download task, Code: ${err.code}, message: ${err.message}`);
2467 2468
        return;
      }
2469 2470 2471
      console.info(`Succeeded in pausing a download task. `);
    });
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2472
  }).catch((err: BusinessError) => {
2473
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503
  });
  ```


### pause<sup>10+</sup>

pause(): Promise&lt;void&gt;

暂停任务,可以暂停正在等待/正在运行/正在重试的后台任务。使用Promise异步回调。

**系统能力**: SystemCapability.Request.FileTransferAgent

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900005 | task mode error. |
  | 21900007 | task state error. |

**示例:**

2504 2505
  ```ts
  let config: request.agent.Config = {
2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526
    action: request.agent.Action.DOWNLOAD,
    url: 'http://127.0.0.1',
    title: 'taskPauseTest',
    description: 'Sample code for pause the download task',
    mode: request.agent.Mode.BACKGROUND,
    overwrite: false,
    method: "GET",
    data: "",
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2527
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
2528
    task.pause().then(() => {
2529
      console.info(`Succeeded in pausing a download task. `);
2530
    }).catch((err: BusinessError) => {
2531
      console.error(`Failed to pause the upload task, Code: ${err.code}, message: ${err.message}`);
2532
    });
2533
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2534
  }).catch((err: BusinessError) => {
2535
    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567
  });
  ```


### resume<sup>10+</sup>

resume(callback: AsyncCallback&lt;void&gt;): void

重新启动任务,可以恢复暂停的后台任务。使用callback异步回调。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | callback | function | 是 | 回调函数,重新启动任务成功,err为undefined,否则为错误对象 |

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900005 | task mode error. |
  | 21900007 | task state error. |

**示例:**

2568 2569
  ```ts
  let config: request.agent.Config = {
2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590
    action: request.agent.Action.DOWNLOAD,
    url: 'http://127.0.0.1',
    title: 'taskResumeTest',
    description: 'Sample code for resume the download task',
    mode: request.agent.Mode.BACKGROUND,
    overwrite: false,
    method: "GET",
    data: "",
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2591 2592
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
    task.resume((err: BusinessError) => {
2593 2594 2595 2596 2597
      if (err) {
        console.error(`Failed to resume the download task, Code: ${err.code}, message: ${err.message}`);
        return;
      }
      console.info(`Succeeded in resuming a download task. `);
2598
    });
2599
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2600
  }).catch((err: BusinessError) => {
2601
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633
  });
  ```


### resume<sup>10+</sup>

resume(): Promise&lt;void&gt;

重新启动任务,可以恢复暂停的后台任务。使用Promise异步回调。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.Request.FileTransferAgent

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900005 | task mode error. |
  | 21900007 | task state error. |

**示例:**

2634 2635
  ```ts
  let config: request.agent.Config = {
2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656
    action: request.agent.Action.DOWNLOAD,
    url: 'http://127.0.0.1',
    title: 'taskResumeTest',
    description: 'Sample code for resume the download task',
    mode: request.agent.Mode.BACKGROUND,
    overwrite: false,
    method: "GET",
    data: "",
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2657
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
2658 2659
    task.resume().then(() => {
      console.info(`Succeeded in resuming a download task. `);
2660
    }).catch((err: BusinessError) => {
2661 2662 2663
      console.error(`Failed to resume the download task, Code: ${err.code}, message: ${err.message}`);
    });
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2664
  }).catch((err: BusinessError) => {
2665
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681
  });
  ```


### stop<sup>10+</sup>

stop(callback: AsyncCallback&lt;void&gt;): void

停止任务,可以停止正在运行/正在等待/正在重试的任务。使用callback异步回调。

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
2682
  | callback | function | 是 | 回调函数,停止任务成功,err为undefined,否则为错误对象 |
2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900007 | task state error. |

**示例:**

2695 2696
  ```ts
  let config: request.agent.Config = {
2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717
    action: request.agent.Action.DOWNLOAD,
    url: 'http://127.0.0.1',
    title: 'taskStopTest',
    description: 'Sample code for stop the download task',
    mode: request.agent.Mode.BACKGROUND,
    overwrite: false,
    method: "GET",
    data: "",
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2718 2719
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
    task.stop((err: BusinessError) => {
2720 2721 2722 2723 2724
      if (err) {
        console.error(`Failed to stop the download task, Code: ${err.code}, message: ${err.message}`);
        return;
      }
      console.info(`Succeeded in stopping a download task. `);
2725
    });
2726
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2727
  }).catch((err: BusinessError) => {
2728
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757
  });
  ```


### stop<sup>10+</sup>

stop(): Promise&lt;void&gt;

停止任务,可以停止正在运行/正在等待/正在重试的任务。使用Promise异步回调。

**系统能力**: SystemCapability.Request.FileTransferAgent

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900007 | task state error. |

**示例:**

2758 2759
  ```ts
  let config: request.agent.Config = {
2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780
    action: request.agent.Action.DOWNLOAD,
    url: 'http://127.0.0.1',
    title: 'taskStopTest',
    description: 'Sample code for stop the download task',
    mode: request.agent.Mode.BACKGROUND,
    overwrite: false,
    method: "GET",
    data: "",
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2781
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
2782 2783
    task.stop().then(() => {
      console.info(`Succeeded in stopping a download task. `);
2784
    }).catch((err: BusinessError) => {
2785 2786 2787
      console.error(`Failed to stop the download task, Code: ${err.code}, message: ${err.message}`);
    });
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2788
  }).catch((err: BusinessError) => {
2789
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2790 2791 2792 2793 2794
  });
  ```

## request.agent.create<sup>10+</sup>

2795
create(context: BaseContext, config: Config, callback: AsyncCallback&lt;Task&gt;): void
2796

2797
创建要上传或下载的任务,并将其排入队列,应用最多支持创建10个任务,服务承载的任务数最多为300个。使用callback异步回调。
2798 2799 2800 2801 2802 2803 2804 2805 2806 2807


**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
2808
  | config | [Config](#config10) | 是 | 上传/下载任务的配置信息。 |
2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
  | callback | AsyncCallback&lt;[Task](#task10)&gt; | 是 | 回调函数,返回创建任务的配置信息。 |

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400001 | file operation error. |
  | 13400003 | task service ability error. |
  | 21900004 | application task queue full error. |
  | 21900005 | task mode error. |

**示例:**

2825 2826 2827 2828 2829 2830 2831 2832 2833 2834
  ```ts
  let attachments: Array<request.agent.FormItem> = [{
    name: "reeateTest",
    value: {
      filename: "reeateTest.avi",
      mimeType: "application/octet-stream",
      path: "./reeateTest.avi",
    }
  }];
  let config: request.agent.Config = {
2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'reeateTest',
    description: 'Sample code for reeate task',
    mode: request.agent.Mode.BACKGROUND,
    overwrite: false,
    method: "PUT",
    data: attachments,
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2856
  request.agent.create(this.context, config, (err: BusinessError, task: request.agent.Task) => {
2857
    if (err) {
2858
      console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2859 2860
      return;
    }
2861
    console.info(`Succeeded in creating a download task. result: ${task.config}`);
2862 2863 2864
  });
  ```

2865 2866 2867
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2868 2869 2870

## request.agent.create<sup>10+</sup>

2871
create(context: BaseContext, config: Config): Promise&lt;Task&gt;
2872

2873
创建要上传或下载的任务,并将其排入队列,应用最多支持创建10个任务,服务承载的任务数最多为300个。使用Promise异步回调。
2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884


**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
2885
  | config | [Config](#config10) | 是 | 上传/下载任务的配置信息。 |
2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;[Task](#task10)&gt; | Promise对象。返回任务配置信息的Promise对象。 |

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400001 | file operation error. |
  | 13400003 | task service ability error. |
  | 21900004 | application task queue full error. |
  | 21900005 | task mode error. |

**示例:**

2906 2907 2908 2909 2910 2911 2912 2913 2914 2915
  ```ts
  let attachments: Array<request.agent.FormItem> = [{
    name: "reeateTest",
    value: {
      filename: "reeateTest.avi",
      mimeType: "application/octet-stream",
      path: "./reeateTest.avi",
    }
  }];
  let config: request.agent.Config = {
2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'reeateTest',
    description: 'Sample code for reeate task',
    mode: request.agent.Mode.BACKGROUND,
    overwrite: false,
    method: "PUT",
    data: attachments,
    saveas: "./",
    network: request.agent.Network.CELLULAR,
    metered: false,
    roaming: true,
    retry: true,
    redirect: true,
    index: 0,
    begins: 0,
    ends: -1,
    gauge: false,
    precise: false,
    token: "it is a secret"
  };
2937
  request.agent.create(this.context, config).then((task: request.agent.Task) => {
2938
    console.info(`Succeeded in creating a download task. result: ${task.config}`);
2939
  }).catch((err) => {
2940
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2941 2942 2943
  });
  ```

2944 2945 2946
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973

## request.agent.remove<sup>10+</sup>

remove(id: string, callback: AsyncCallback&lt;void&gt;): void

移除属于调用方的指定任务,如果正在处理中,该任务将被迫停止。使用callback异步回调。

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | id | string | 是 | 任务id。 |
  | callback | AsyncCallback&lt;void&gt; | 是 | 回调函数,删除指定任务成功,err为undefined,否则为错误对象。 |

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900006 | task not found error. |

**示例:**

2974 2975
  ```ts
  request.agent.remove("id", (err: BusinessError) => {
2976
    if (err) {
2977
      console.error(`Failed to removing a download task, Code: ${err.code}, message: ${err.message}`);
2978 2979
      return;
    }
2980
    console.info(`Succeeded in creating a download task.`);
2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015
  });
  ```


## request.agent.remove<sup>10+</sup>

remove(id: string): Promise&lt;void&gt;

移除属于调用方的指定任务,如果正在处理中,该任务将被迫停止,使用Promise异步回调。

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | id | string | 是 | 任务id。 |

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |

**错误码:**

以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900006 | task not found error. |

**示例:**

3016
  ```ts
3017
  request.agent.remove("id").then(() => {
3018
    console.info(`Succeeded in removing a download task. `);
3019
  }).catch((err: BusinessError) => {
3020
    console.error(`Failed to remove a download task, Code: ${err.code}, message: ${err.message}`);
3021 3022 3023
  });
  ```

3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037

## request.agent.show<sup>10+</sup>

show(id: string, callback: AsyncCallback&lt;TaskInfo&gt;): void

根据任务id查询任务的详细信息。使用callback异步回调。

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | id | string | 是 | 任务id。 |
3038
  | callback | AsyncCallback&lt;[TaskInfo](#taskinfo10)&gt; | 是 | 回调函数,返回任务详细信息。 |
3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049

**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900006 | task not found error. |

**示例:**

3050 3051
  ```ts
  request.agent.show("123456", (err: BusinessError, taskInfo: request.agent.TaskInfo) => {
3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078
    if (err) {
      console.error(`Failed to show a unload task, Code: ${err.code}, message: ${err.message}`);
      return;
    }
    console.info(`Succeeded in showing a unload task.`);
  });
  ```


## request.agent.show<sup>10+</sup>

show(id: string): Promise&lt;TaskInfo&gt;

根据任务id查询任务的详细信息。使用Promise异步回调。

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | id | string | 是 | 任务id。 |

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
3079
| Promise&lt;[TaskInfo](#taskinfo10)&gt; | Promise对象。返回任务详细信息的Promise对象。 |
3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090

**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900006 | task not found error. |

**示例:**

3091 3092
  ```ts
  request.agent.show("123456").then((taskInfo: request.agent.TaskInfo) => {
3093
    console.info(`Succeeded in showing a unload task.`);
3094
  }).catch((err: BusinessError) => {
3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113
    console.error(`Failed to show a unload task, Code: ${err.code}, message: ${err.message}`);
  });
  ```


## request.agent.touch<sup>10+</sup>

touch(id: string, token: string, callback: AsyncCallback&lt;TaskInfo&gt;): void

根据任务id和token查询任务的详细信息。使用callback异步回调。

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | id | string | 是 | 任务id。 |
  | token | string | 是 | 任务查询token。 |
3114
  | callback | AsyncCallback&lt;[TaskInfo](#taskinfo10)&gt; | 是 | 回调函数,返回任务详细信息。 |
3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125

**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900006 | task not found error. |

**示例:**

3126 3127
  ```ts
  request.agent.touch("123456", "token", (err: BusinessError, taskInfo: request.agent.TaskInfo) => {
3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155
    if (err) {
      console.error(`Failed to touch a unload task, Code: ${err.code}, message: ${err.message}`);
      return;
    }
    console.info(`Succeeded in touching a unload task.`);
  });
  ```


## request.agent.touch<sup>10+</sup>

touch(id: string, token: string): Promise&lt;TaskInfo&gt;

根据任务id和token查询任务的详细信息。使用Promise异步回调。

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | id | string | 是 | 任务id。 |
  | token | string | 是 | 任务查询token。 |

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
3156
| Promise&lt;[TaskInfo](#taskinfo10)&gt; | Promise对象。返回任务详细信息的Promise对象。 |
3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167

**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900006 | task not found error. |

**示例:**

3168 3169
  ```ts
  request.agent.touch("123456", "token").then((taskInfo: request.agent.TaskInfo) => {
3170
    console.info(`Succeeded in touching a unload task. `);
3171
  }).catch((err: BusinessError) => {
3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200
    console.error(`Failed to touch a unload task, Code: ${err.code}, message: ${err.message}`);
  });
  ```


## request.agent.search<sup>10+</sup>

search(filter: Filter, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void

根据[Filter](#filter10)过滤条件查找任务id。使用callback异步回调。

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | filter | [Filter](#filter10) | 是 | 过滤条件。 |
  | callback | AsyncCallback&lt;Array&lt;string&gt;&gt; | 是 | 回调函数,返回满足条件任务id。 |

**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |

**示例:**

3201 3202 3203
  ```ts
  let filter: request.agent.Filter = {
    bundle: "com.example.myapplication",
3204
    action: request.agent.Action.UPLOAD,
3205
    mode: request.agent.Mode.BACKGROUND
3206
  }
3207
  request.agent.search(filter, (err: BusinessError, data: Array<string>) => {
3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245
    if (err) {
      console.error(`Failed to search a unload task, Code: ${err.code}, message: ${err.message}`);
      return;
    }
    console.info(`Succeeded in searching a unload task. `);
  });
  ```


## request.agent.search<sup>10+</sup>

search(filter: Filter): Promise&lt;Array&lt;string&gt;&gt;

根据[Filter](#filter10)过滤条件查找任务id。使用Promise异步回调。

**系统能力**: SystemCapability.Request.FileTransferAgent

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | filter | [Filter](#filter10) | 是 | 过滤条件。 |

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;Array&lt;string&gt;&gt; | Promise对象。返回满足条件任务id的Promise对象。 |

**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |

**示例:**

3246 3247 3248
  ```ts
  let filter: request.agent.Filter = {
    bundle: "com.example.myapplication",
3249 3250 3251
    action: request.agent.Action.UPLOAD,
    mode: request.agent.Mode.BACKGROUND
  }
3252
  request.agent.search(filter).then((data: Array<string>) => {
3253
    console.info(`Succeeded in searching a unload task. `);
3254
  }).catch((err: BusinessError) => {
3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276
    console.error(`Failed to search a unload task, Code: ${err.code}, message: ${err.message}`);
  });
  ```


## request.agent.query<sup>10+</sup>

query(id: string, callback: AsyncCallback&lt;TaskInfo&gt;): void

根据任务id查询任务的详细信息。使用callback异步回调。

**需要权限**:ohos.permission.DOWNLOAD_SESSION_MANAGER 或 ohos.permission.UPLOAD_SESSION_MANAGER

**系统能力**: SystemCapability.Request.FileTransferAgent

**系统接口**:此接口为系统接口。

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | id | string | 是 | 任务id。 |
3277
  | callback | AsyncCallback&lt;[TaskInfo](#taskinfo10)&gt; | 是 | 回调函数,返回任务详细信息。 |
3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288

**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900006 | task not found error. |

**示例:**

3289 3290
  ```ts
  request.agent.query("123456", (err: BusinessError, taskInfo: request.agent.TaskInfo) => {
3291 3292 3293 3294
    if (err) {
      console.error(`Failed to query a unload task, Code: ${err.code}, message: ${err.message}`);
      return;
    }
3295
    console.info(`Succeeded in querying a unload task. result: ${taskInfo.uid}`);
3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321
  });
  ```


## request.agent.query<sup>10+</sup>

query(id: string): Promise&lt;TaskInfo&gt;

根据任务id查询任务的详细信息。使用Promise异步回调。

**需要权限**:ohos.permission.DOWNLOAD_SESSION_MANAGER 或 ohos.permission.UPLOAD_SESSION_MANAGER

**系统能力**: SystemCapability.Request.FileTransferAgent

**系统接口**:此接口为系统接口。

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | id | string | 是 | 任务id。 |

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
3322
| Promise&lt;[TaskInfo](#taskinfo10)&gt; | Promise对象。返回任务详细信息的Promise对象。 |
3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333

**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400003 | task service ability error. |
  | 21900006 | task not found error. |

**示例:**

3334 3335 3336 3337
  ```ts
  request.agent.query("123456",).then((taskInfo: request.agent.TaskInfo) => {
    console.info(`Succeeded in querying a unload task. result: ${taskInfo.uid}`);
  }).catch((err: BusinessError) => {
3338 3339 3340 3341
    console.error(`Failed to query a unload task, Code: ${err.code}, message: ${err.message}`);
  });
  ```

3342
<!--no_check-->