js-apis-request.md 109.5 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
  ```js
107
  let uploadTask;
108
  let context;
A
anyueling 已提交
109
  let uploadConfig = {
A
anyueling 已提交
110
    url: 'http://patch',
A
anyueling 已提交
111 112 113 114 115
    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 已提交
116
  try {
117
    request.uploadFile(context, uploadConfig).then((data) => {
Z
zengyawen 已提交
118
      uploadTask = data;
A
anyueling 已提交
119
    }).catch((err) => {
120
      console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
A
anyueling 已提交
121 122
    });
  } catch (err) {
123
    console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
A
anyueling 已提交
124
  }
Z
zengyawen 已提交
125 126
  ```

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

Z
zengyawen 已提交
131

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

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

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

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

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

142 143
**参数:**

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

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

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

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

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

160
  ```js
161
  let uploadTask;
162
  let context;
A
anyueling 已提交
163
  let uploadConfig = {
A
anyueling 已提交
164
    url: 'http://patch',
A
anyueling 已提交
165 166 167 168 169
    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 已提交
170
  try {
171
    request.uploadFile(context, uploadConfig, (err, data) => {
Z
zengyawen 已提交
172
      if (err) {
173 174
        console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
        return;
Z
zengyawen 已提交
175 176
      }
      uploadTask = data;
A
anyueling 已提交
177 178
    });
  } catch (err) {
179
    console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
A
anyueling 已提交
180
  }
Z
zengyawen 已提交
181
  ```
A
anyueling 已提交
182

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

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

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

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

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

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

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

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

**参数:**

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

**返回值:**

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

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

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


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

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

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

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

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

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

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

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

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

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

A
anyueling 已提交
255 256 257
  ```js
  let uploadTask;
  let uploadConfig = {
A
anyueling 已提交
258
    url: 'http://patch',
A
anyueling 已提交
259 260 261 262 263
    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 已提交
264
  request.upload(uploadConfig, (err, data) => {
265 266 267 268 269
    if (err) {
      console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);
      return;
    }
    uploadTask = data;
A
anyueling 已提交
270 271
  });
  ```
Z
zengyawen 已提交
272 273 274

## UploadTask

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

Z
zengyawen 已提交
277 278 279 280


### on('progress')

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

283
订阅上传任务进度监听,同步方法,使用callback形式返回结果。
Z
zengyawen 已提交
284 285 286 287 288

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

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

289 290 291
**参数:**

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

296
  回调函数的参数
Z
zengyawen 已提交
297

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

303
**示例:**
A
anyueling 已提交
304

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


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

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

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

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

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

323 324 325
**参数:**

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

  回调函数的参数:

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

336
**示例:**
A
anyueling 已提交
337

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


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

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

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

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

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

**参数:**

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

  回调函数的参数

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

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

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

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


Z
zengyawen 已提交
388 389
### off('progress')

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

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

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

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

398 399
**参数:**

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

405
**示例:**
A
anyueling 已提交
406

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


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

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

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

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

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

425 426
**参数:**

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

432
**示例:**
A
anyueling 已提交
433

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

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

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

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

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

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

**参数:**

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

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

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

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

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

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

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

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

487 488 489
**返回值:**

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

493
**示例:**
A
anyueling 已提交
494

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


A
anyueling 已提交
504
### delete<sup>9+</sup>
Z
zengyawen 已提交
505

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

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

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

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

514 515
**参数:**

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

520
**示例:**
A
anyueling 已提交
521

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


A
anyueling 已提交
533
### remove<sup>(deprecated)</sup>
534

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

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

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

541 542 543 544 545 546
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

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

**示例:**

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


A
anyueling 已提交
562
### remove<sup>(deprecated)</sup>
563

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

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

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

570 571 572 573 574 575
**需要权限**:ohos.permission.INTERNET

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

**参数:**

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

**示例:**

  ```js
A
anyueling 已提交
583
  uploadTask.remove((err, result) => {
584 585 586 587 588 589 590 591 592
    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}`);
    }
593 594 595
  });
  ```

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

A
anyueling 已提交
599 600
**需要权限**:ohos.permission.INTERNET

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

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

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

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

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

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

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

A
anyueling 已提交
627 628
**需要权限**:ohos.permission.INTERNET

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

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


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

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

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

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

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

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

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

Z
zengyawen 已提交
657 658 659 660 661

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

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

662 663 664
**参数:**

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

669 670 671
**返回值:**

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

A
anyueling 已提交
675
**错误码:**
676

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

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

685
**示例:**
A
anyueling 已提交
686

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

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

Z
zengyawen 已提交
705

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

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

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

Z
zengyawen 已提交
712 713 714 715 716

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

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

717 718
**参数:**

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

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

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

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

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

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

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

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

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

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

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

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

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

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

**参数:**

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

**返回值:**

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

A
anyueling 已提交
784
**示例:**
A
anyueling 已提交
785

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


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

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

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

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

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

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

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

**参数:**

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

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

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

Z
zengyawen 已提交
831 832
## DownloadTask

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


### on('progress')

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

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

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

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

846 847 848
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
849
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
850
  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
851
  | callback | function | 是 | 下载任务进度的回调函数。 |
Z
zengyawen 已提交
852 853 854

  回调函数的参数:

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

860
**示例:**
A
anyueling 已提交
861

862
  ```js
C
cy7717 已提交
863
  let progresCallback = (receivedSize, totalSize) => {
864
    console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
865
  };
C
cy7717 已提交
866
  downloadTask.on('progress', progresCallback);
Z
zengyawen 已提交
867 868 869 870 871
  ```


### off('progress')

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

874
取消订阅下载任务进度监听,同步方法。
Z
zengyawen 已提交
875 876 877 878 879

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

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

880 881
**参数:**

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

887
**示例:**
A
anyueling 已提交
888

889
  ```js
C
cy7717 已提交
890
  let progresCallback = (receivedSize, totalSize) => {
891
    console.info('Download delete progress notification.' + 'receivedSize:' + receivedSize + 'totalSize:' + totalSize);
C
cy7717 已提交
892 893
  };
  downloadTask.off('progress', progresCallback);
Z
zengyawen 已提交
894 895 896
  ```


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

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

901
订阅下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
902 903 904 905 906

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

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

907 908 909
**参数:**

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

914
**示例:**
A
anyueling 已提交
915

916
  ```js
917
  let completeCallback = () => {
918
    console.info('Download task completed.');
919 920
  };
  downloadTask.on('complete', completeCallback);
C
mod  
cy7717 已提交
921 922

  let pauseCallback = () => {
923
    console.info('Download task pause.');
C
mod  
cy7717 已提交
924 925 926 927
  };
  downloadTask.on('pause', pauseCallback);

  let removeCallback = () => {
928
    console.info('Download task remove.');
C
mod  
cy7717 已提交
929 930
  };
  downloadTask.on('remove', removeCallback);
Z
zengyawen 已提交
931 932 933
  ```


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

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

938
取消订阅下载任务相关的监听,同步方法。
Z
zengyawen 已提交
939 940 941 942 943

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

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

944 945 946
**参数:**

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

951
**示例:**
A
anyueling 已提交
952

953
  ```js
C
cy7717 已提交
954
  let completeCallback = () => {
955
    console.info('Download delete complete notification.');
C
cy7717 已提交
956
  };
957
  downloadTask.off('complete', completeCallback);
C
mod  
cy7717 已提交
958 959

  let pauseCallback = () => {
960
    console.info('Download delete pause notification.');
C
mod  
cy7717 已提交
961 962 963 964
  };
  downloadTask.off('pause', pauseCallback);

  let removeCallback = () => {
965
    console.info('Download delete remove notification.');
C
mod  
cy7717 已提交
966 967
  };
  downloadTask.off('remove', removeCallback);
Z
zengyawen 已提交
968 969 970 971 972
  ```


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

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

975
订阅下载任务失败监听,同步方法,使用callback形式返回结果。
Z
zengyawen 已提交
976 977 978 979 980

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

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

981 982 983
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
984
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
985 986
  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 是 | 下载失败的回调函数。 |
Z
zengyawen 已提交
987 988 989

  回调函数的参数:

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

994
**示例:**
A
anyueling 已提交
995

996 997
  ```js
  let failCallback = (err) => {
998
    console.error(`Failed to download the task. Code: ${err.code}, message: ${err.message}`);
999 1000
  };
  downloadTask.on('fail', failCallback);
Z
zengyawen 已提交
1001 1002 1003 1004 1005
  ```


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

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

1008
取消订阅下载任务失败监听,同步方法。
Z
zengyawen 已提交
1009 1010 1011 1012 1013

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

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

1014 1015 1016
**参数:**

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

1021
**示例:**
A
anyueling 已提交
1022

1023
  ```js
C
cy7717 已提交
1024
  let failCallback = (err) => {
1025
    console.error(`Failed to download the task. Code: ${err.code}, message: ${err.message}`);
C
cy7717 已提交
1026
  };
1027
  downloadTask.off('fail', failCallback);
Z
zengyawen 已提交
1028 1029
  ```

A
anyueling 已提交
1030
### delete<sup>9+</sup>
Z
zengyawen 已提交
1031

A
anyueling 已提交
1032
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1033 1034 1035 1036 1037 1038 1039

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

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

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

1040 1041 1042
**返回值:**

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

1046
**示例:**
A
anyueling 已提交
1047

1048
  ```js
A
anyueling 已提交
1049
  downloadTask.delete().then((result) => {
1050
    console.info('Succeeded in removing the download task.');
Z
zengyawen 已提交
1051
  }).catch ((err) => {
1052
    console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
Z
zengyawen 已提交
1053 1054 1055 1056
  });
  ```


A
anyueling 已提交
1057
### delete<sup>9+</sup>
Z
zengyawen 已提交
1058

A
anyueling 已提交
1059
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
1060 1061 1062 1063 1064 1065 1066

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

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

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

1067 1068
**参数:**

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

1073
**示例:**
A
anyueling 已提交
1074

1075
  ```js
A
anyueling 已提交
1076
  downloadTask.delete((err, result)=>{
1077 1078 1079 1080
    if(err) {
      console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    } 
1081
    console.info('Succeeded in removing the download task.');
Z
zengyawen 已提交
1082 1083 1084 1085
  });
  ```


A
anyueling 已提交
1086
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1087

A
anyueling 已提交
1088
getTaskInfo(): Promise&lt;DownloadInfo&gt;
Z
zengyawen 已提交
1089 1090 1091 1092 1093 1094 1095

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

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

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

1096 1097 1098
**返回值:**

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

1102
**示例:**
A
anyueling 已提交
1103

1104
  ```js
A
anyueling 已提交
1105
  downloadTask.getTaskInfo().then((downloadInfo) => {    
1106
    console.info('Succeeded in querying the download task')
Z
zengyawen 已提交
1107
  }) .catch((err) => {
1108
    console.error(`Failed to query the download task. Code: ${err.code}, message: ${err.message}`)
Z
zengyawen 已提交
1109 1110 1111 1112
  });
  ```


A
anyueling 已提交
1113
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1114

A
anyueling 已提交
1115
getTaskInfo(callback: AsyncCallback&lt;DownloadInfo&gt;): void
Z
zengyawen 已提交
1116 1117 1118 1119 1120 1121 1122

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

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

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

1123 1124
**参数:**

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

1129
**示例:**
A
anyueling 已提交
1130

1131
  ```js
A
anyueling 已提交
1132
  downloadTask.getTaskInfo((err, downloadInfo)=>{
1133 1134 1135 1136 1137
    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');
    }
Z
zengyawen 已提交
1138 1139 1140 1141
  });
  ```


A
anyueling 已提交
1142
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1143

A
anyueling 已提交
1144
getTaskMimeType(): Promise&lt;string&gt;
Z
zengyawen 已提交
1145 1146 1147 1148 1149 1150 1151

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

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

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

1152 1153 1154
**返回值:**

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

1158
**示例:**
A
anyueling 已提交
1159

1160
  ```js
A
anyueling 已提交
1161
  downloadTask.getTaskMimeType().then((data) => {    
1162
    console.info('Succeeded in querying the download MimeType');
Z
zengyawen 已提交
1163
  }).catch((err) => {
1164
    console.error(`Failed to query the download MimeType. Code: ${err.code}, message: ${err.message}`)
Z
zengyawen 已提交
1165 1166 1167 1168
  });
  ```


A
anyueling 已提交
1169
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1170

A
anyueling 已提交
1171
getTaskMimeType(callback: AsyncCallback&lt;string&gt;): void;
Z
zengyawen 已提交
1172 1173 1174 1175 1176 1177 1178

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

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

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

1179 1180
**参数:**

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

1185
**示例:**
A
anyueling 已提交
1186

1187
  ```js
A
anyueling 已提交
1188
  downloadTask.getTaskMimeType((err, data)=>{
1189 1190 1191 1192 1193
    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');
    }
Z
zengyawen 已提交
1194 1195 1196 1197
  });
  ```


A
anyueling 已提交
1198
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1199

A
anyueling 已提交
1200
suspend(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1201 1202 1203 1204 1205 1206 1207

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

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

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

1208 1209 1210
**返回值:**

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

1214
**示例:**
A
anyueling 已提交
1215

1216
  ```js
A
anyueling 已提交
1217
  downloadTask.suspend().then((result) => {    
1218
    console.info('Succeeded in pausing the download task.');
Z
zengyawen 已提交
1219
  }).catch((err) => {
1220
    console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
Z
zengyawen 已提交
1221 1222 1223 1224
  });
  ```


A
anyueling 已提交
1225
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1226

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

Z
zengyawen 已提交
1229 1230 1231 1232 1233 1234
暂停下载任务,异步方法,使用callback形式返回结果。

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

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

1235 1236
**参数:**

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

1241
**示例:**
A
anyueling 已提交
1242

1243
  ```js
A
anyueling 已提交
1244
  downloadTask.suspend((err, result)=>{
1245 1246 1247 1248
    if(err) {
      console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    }
1249
    console.info('Succeeded in pausing the download task.');
Z
zengyawen 已提交
1250 1251 1252 1253
  });
  ```


A
anyueling 已提交
1254
### restore<sup>9+</sup>
Z
zengyawen 已提交
1255

A
anyueling 已提交
1256
restore(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1257 1258 1259 1260 1261 1262 1263

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

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

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

1264
**返回值:**
1265 1266

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

1270
**示例:**
A
anyueling 已提交
1271

1272
  ```js
A
anyueling 已提交
1273
  downloadTask.restore().then((result) => {
1274
    console.info('Succeeded in resuming the download task.')
Z
zengyawen 已提交
1275
  }).catch((err) => {
1276
    console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
Z
zengyawen 已提交
1277 1278 1279 1280
  });
  ```


A
anyueling 已提交
1281
### restore<sup>9+</sup>
Z
zengyawen 已提交
1282

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

Z
zengyawen 已提交
1285 1286 1287 1288 1289 1290
重新启动暂停的下载任务,异步方法,使用callback形式返回结果。

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

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

1291 1292
**参数:**

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

1297
**示例:**
A
anyueling 已提交
1298

1299
  ```js
A
anyueling 已提交
1300
  downloadTask.restore((err, result)=>{
1301 1302 1303 1304
    if (err) {
      console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    } 
1305
    console.info('Succeeded in resuming the download task.');
Z
zengyawen 已提交
1306 1307 1308 1309
  });
  ```


A
anyueling 已提交
1310 1311 1312
### remove<sup>(deprecated)</sup>

remove(): Promise&lt;boolean&gt;
1313 1314 1315

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

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

1318 1319 1320 1321 1322 1323
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1324
  | 类型 | 说明 |
1325
  | -------- | -------- |
A
anyueling 已提交
1326
  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
1327 1328 1329 1330

**示例:**

  ```js
A
anyueling 已提交
1331
  downloadTask.remove().then((result) => {
1332
    console.info('Succeeded in removing the download task.');
1333
  }).catch ((err) => {
1334
    console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
1335 1336 1337 1338
  });
  ```


A
anyueling 已提交
1339
### remove<sup>(deprecated)</sup>
1340

A
anyueling 已提交
1341
remove(callback: AsyncCallback&lt;boolean&gt;): void
1342 1343 1344

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

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

1347 1348 1349 1350 1351 1352
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1353
  | 参数名 | 类型 | 必填 | 说明 |
1354
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1355
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
1356 1357 1358 1359

**示例:**

  ```js
A
anyueling 已提交
1360
  downloadTask.remove((err, result)=>{
1361 1362 1363
    if(err) {
      console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
      return;
1364 1365
    }
    console.info('Succeeded in removing the download task.');
1366 1367 1368 1369
  });
  ```


A
anyueling 已提交
1370
### query<sup>(deprecated)</sup>
1371

A
anyueling 已提交
1372
query(): Promise&lt;DownloadInfo&gt;
1373 1374 1375

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

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

1378 1379 1380 1381
**需要权限**:ohos.permission.INTERNET

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

1382 1383
**返回值:**

A
anyueling 已提交
1384 1385 1386
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
1387 1388 1389 1390

**示例:**

  ```js
A
anyueling 已提交
1391
  downloadTask.query().then((downloadInfo) => {    
1392
    console.info('Succeeded in querying the download task.')
1393
  }) .catch((err) => {
1394
    console.error(`Failed to query the download task. Code: ${err.code}, message: ${err.message}`)
1395 1396 1397 1398
  });
  ```


A
anyueling 已提交
1399
### query<sup>(deprecated)</sup>
1400

A
anyueling 已提交
1401
query(callback: AsyncCallback&lt;DownloadInfo&gt;): void
1402 1403 1404

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

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

1407 1408 1409 1410 1411 1412
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1413
  | 参数名 | 类型 | 必填 | 说明 |
1414
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1415
  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
1416 1417 1418 1419

**示例:**

  ```js
A
anyueling 已提交
1420
  downloadTask.query((err, downloadInfo)=>{
1421 1422 1423 1424 1425
    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.');
    }
1426 1427 1428 1429
  });
  ```


A
anyueling 已提交
1430
### queryMimeType<sup>(deprecated)</sup>
1431

A
anyueling 已提交
1432
queryMimeType(): Promise&lt;string&gt;
1433 1434 1435

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

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

1438 1439 1440 1441 1442 1443
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1444
  | 类型 | 说明 |
1445
  | -------- | -------- |
A
anyueling 已提交
1446
  | Promise&lt;string&gt; | 查询下载任务的MimeType。 |
1447 1448 1449 1450

**示例:**

  ```js
A
anyueling 已提交
1451
  downloadTask.queryMimeType().then((data) => {    
1452
    console.info('Succeededto in querying the download MimeType.');
1453
  }).catch((err) => {
1454
    console.error(`Failed to query the download MimeType. Code: ${err.code}, message: ${err.message}`)
1455 1456 1457 1458
  });
  ```


A
anyueling 已提交
1459
### queryMimeType<sup>(deprecated)</sup>
1460

A
anyueling 已提交
1461
queryMimeType(callback: AsyncCallback&lt;string&gt;): void;
1462 1463 1464

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

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

1467 1468 1469 1470 1471 1472
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1473
  | 参数名 | 类型 | 必填 | 说明 |
1474
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1475
  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的MimeType的回调函数。 |
1476 1477 1478 1479

**示例:**

  ```js
A
anyueling 已提交
1480
  downloadTask.queryMimeType((err, data)=>{
1481 1482 1483 1484 1485
    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.');
    }
1486 1487 1488 1489
  });
  ```


A
anyueling 已提交
1490
### pause<sup>(deprecated)</sup>
1491

A
anyueling 已提交
1492
pause(): Promise&lt;void&gt;
1493 1494 1495

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

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

1498 1499 1500 1501 1502 1503
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1504
  | 类型 | 说明 |
1505
  | -------- | -------- |
A
anyueling 已提交
1506
  | Promise&lt;void&gt; | 暂停下载任务是否成功。 |
1507 1508 1509 1510

**示例:**

  ```js
A
anyueling 已提交
1511
  downloadTask.pause().then((result) => {    
1512
    console.info('Succeeded in pausing the download task.');
1513
  }).catch((err) => {
1514
    console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
1515 1516 1517 1518
  });
  ```


A
anyueling 已提交
1519
### pause<sup>(deprecated)</sup>
1520

A
anyueling 已提交
1521 1522 1523
pause(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9-1)替代。
1524 1525 1526 1527 1528 1529 1530 1531 1532

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

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

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

**参数:**

A
anyueling 已提交
1533
  | 参数名 | 类型 | 必填 | 说明 |
1534
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1535
  | callback | AsyncCallback&lt;void&gt; | 是 | 暂停下载任务的回调函数。 |
1536 1537 1538 1539

**示例:**

  ```js
A
anyueling 已提交
1540
  downloadTask.pause((err, result)=>{
1541 1542 1543 1544
    if(err) {
      console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    }
1545
    console.info('Succeeded in pausing the download task.');
1546 1547 1548 1549
  });
  ```


A
anyueling 已提交
1550
### resume<sup>(deprecated)</sup>
1551

A
anyueling 已提交
1552
resume(): Promise&lt;void&gt;
1553 1554 1555

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

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

1558 1559 1560 1561
**需要权限**:ohos.permission.INTERNET

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

1562
**返回值:**
1563

A
anyueling 已提交
1564
  | 类型 | 说明 |
1565
  | -------- | -------- |
A
anyueling 已提交
1566
  | Promise&lt;void&gt; | 重新启动暂停的下载任务是否成功。 |
1567 1568 1569 1570

**示例:**

  ```js
A
anyueling 已提交
1571
  downloadTask.resume().then((result) => {
1572
    console.info('Succeeded in resuming the download task.')
1573
  }).catch((err) => {
1574
    console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
1575 1576 1577 1578
  });
  ```


A
anyueling 已提交
1579
### resume<sup>(deprecated)</sup>
1580

A
anyueling 已提交
1581 1582 1583
resume(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9-1)替代。
1584 1585 1586 1587 1588 1589 1590 1591 1592

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

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

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

**参数:**

A
anyueling 已提交
1593
  | 参数名 | 类型 | 必填 | 说明 |
1594
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1595
  | callback | AsyncCallback&lt;void&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
1596 1597 1598 1599

**示例:**

  ```js
A
anyueling 已提交
1600
  downloadTask.resume((err, result)=>{
1601 1602 1603 1604
    if (err) {
      console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    }
1605
    console.info('Succeeded in resuming the download task.');
1606 1607 1608 1609
  });
  ```


Z
zengyawen 已提交
1610
## DownloadConfig
1611
下载任务的配置信息。
Z
zengyawen 已提交
1612

A
anyueling 已提交
1613 1614
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1615 1616 1617 1618 1619
**系统能力**: SystemCapability.MiscServices.Download

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| url | string | 是 | 资源地址。 |
1620
| 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 |
1621
| enableMetered | boolean | 否 | 设置是否允许在按流量计费的连接下下载(默认使用false)。Wi-Fi为非计费网络,数据流量为计费网络。<br/>-&nbsp;true:是<br/>-&nbsp;false:否 |
1622
| enableRoaming | boolean | 否 | 设置是否允许在漫游网络中下载(默认使用false)。 <br/>-&nbsp;true:是<br/>-&nbsp;false:否|
Z
zengyawen 已提交
1623
| description | string | 否 | 设置下载会话的描述。 |
1624
| 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\`,并将文件存储在此路径下。|
1625
| networkType | number | 否 | 设置允许下载的网络类型(默认使用NETWORK_MOBILE&NETWORK_WIFI)。<br/>-&nbsp;NETWORK_MOBILE:0x00000001<br/>-&nbsp;NETWORK_WIFI:0x00010000|
A
anyueling 已提交
1626
| title | string | 否 | 设置下载任务名称。 |
1627
| background<sup>9+</sup> | boolean | 否 | 后台任务通知开关,开启后可在通知中显示下载状态(默认使用false)。 |
Z
zengyawen 已提交
1628 1629


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

A
anyueling 已提交
1633 1634
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1635 1636
**系统能力**: SystemCapability.MiscServices.Download

1637
| 名称 | 类型 |必填 |  说明 |
1638
| -------- | -------- | -------- | -------- |
1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649
| 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)。 |
1650 1651 1652 1653 1654 1655 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

## 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; | 是 | 表单参数值。 |


1709
## Config<sup>10+</sup> 
1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724
上传/下载任务的配置信息。

**系统能力**: 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;,默认为空。 |
1725
| saveas | string | 否 | 保存下载文件的路径,包括如下两种:<br/>-相对路径,如"./xxx/yyy/zzz.html"、"xxx/yyy/zzz.html",位于调用方的缓存路径下。<br/>-uri路径,如"datashare://bundle/xxx/yyy/zzz.html",仅对具有访问url路径权限的应用开放。该功能暂不支持。<br/>默认为相对路径,即下载至应用当前缓存路径下。 |
1726
| network | [Network](#network10) | 否 | 网络选项,当前支持无线网络WIFI和蜂窝数据网络CELLULAR,默认为ANY(WIFI或CELLULAR)。 |
1727 1728 1729 1730
| 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:否 |
1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746
| 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

| 名称 | 值 |说明 |
| -------- | -------- |-------- |
1747
| INITIALIZED | 0x00 |通过配置信息([Config](#config10))创建初始化任务。 |
1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771
| 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。 |


1772
## Faults<sup>10+</sup>  
1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786

定义任务失败的原因。

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

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


1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800
## 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表示后台任务。 |

1801
## TaskInfo<sup>10+</sup> 
1802
查询结果的任务信息数据结构,提供普通查询和系统查询,两种字段的可见范围不同。
1803 1804 1805 1806 1807 1808 1809

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

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| uid | string | 否 | 应用程序的UID,仅用于系统查询。<br/>**系统接口**:此接口为系统接口。|
| bundle | string | 否 | 应用程序的包名,仅用于系统查询。<br/>**系统接口**:此接口为系统接口。|
1810 1811 1812
| 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)进行查询时会返回空字符串。 |
1813 1814 1815 1816 1817 1818 1819 1820
| 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 | 是 | 后台任务的进度通知策略。 |
1821 1822
| ctime | number | 是 | 创建任务的Unix时间戳(毫秒),由当前设备的系统生成。<br/>说明:使用[request.agent.search<sup>10+</sup>](#requestagentsearch10-1)进行查询时,该值需处于[after,before]区间内才可正常查询到任务id,before和after信息详见[Filter](#filter10)
| mtime | number | 是 | 任务状态改变时的Unix时间戳(毫秒),由当前设备的系统生成。|
1823 1824
| retry | boolean | 是 | 任务的重试开关,仅应用于后台任务。 |
| tries | number | 是 | 任务的尝试次数。 |
1825
| faults | [Faults](#faults10) | 是 | 任务的失败原因。<br/>-OTHERS表示其他故障。<br/>-DISCONNECT表示网络断开连接。<br/>-TIMEOUT表示任务超时。<br/>-PROTOCOL表示协议错误。<br/>-FSIO表示文件系统io错误。|
1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840
| 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,在系统上是唯一的,由系统自动生成。 |
1841
| config | [Config](#config10) | 是 | 任务的配置信息。 |
1842 1843


1844
### on('progress')<sup>10+</sup>
1845

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

1848
订阅任务进度的监听。
1849 1850 1851 1852 1853 1854 1855

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

**参数:**

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

**错误码:**

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

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

**示例:**

  ```js
1870
  let context;
1871 1872 1873 1874 1875 1876 1877 1878
  let attachments = [{
                       name: "taskOnTest",
                       value: {
                         filename: "taskOnTest.avi",
                         mimetype: "application/octet-stream",
                         path: "./taskOnTest.avi",
                       }
                     }];
1879
  let config = {
1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'taskOnTest',
    description: 'Sample code for event listening',
    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"
  };
  let createOnCallback = (progress) => {
    console.info('upload task completed.');
  };
1904
  request.agent.create(context, config).then((task)=> {
1905
    task.on('progress', createOnCallback);
1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950
    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
  }).catch((err) => {
    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

订阅任务完成的监听。

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

**参数:**

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

**错误码:**

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

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

**示例:**

  ```js
  let context;
  let attachments = [{
                       name: "taskOnTest",
                       value: {
                         filename: "taskOnTest.avi",
                         mimetype: "application/octet-stream",
                         path: "./taskOnTest.avi",
                       }
                     }];
1951
  let config = {
1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'taskOnTest',
    description: 'Sample code for event listening',
    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"
  };
  let createOnCallback = (progress) => {
    console.info('upload task completed.');
  };
1976
  request.agent.create(context, config).then((task)=> {
1977
    task.on('completed', createOnCallback);
1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022
    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
  }).catch((err) => {
    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

订阅任务失败的监听。

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

**参数:**

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

**错误码:**

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

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

**示例:**

  ```js
  let context;
  let attachments = [{
                       name: "taskOnTest",
                       value: {
                         filename: "taskOnTest.avi",
                         mimetype: "application/octet-stream",
                         path: "./taskOnTest.avi",
                       }
                     }];
2023
  let config = {
2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'taskOnTest',
    description: 'Sample code for event listening',
    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"
  };
  let createOnCallback = (progress) => {
    console.info('upload task completed.');
  };
2048
  request.agent.create(context, config).then((task)=> {
2049
    task.on('failed', createOnCallback);
2050
    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
2051
  }).catch((err) => {
2052
    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
2053 2054 2055
  });
  ```

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


2061 2062 2063
### off('progress')<sup>10+</sup>

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

2065
取消订阅任务进度的监听。
2066 2067 2068 2069 2070 2071 2072

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

**参数:**

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

**错误码:**

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

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

**示例:**

  ```js
2087
  let context;
2088 2089 2090 2091 2092 2093 2094 2095
  let attachments = [{
                       name: "taskOffTest",
                       value: {
                         filename: "taskOffTest.avi",
                         mimetype: "application/octet-stream",
                         path: "./taskOffTest.avi",
                       }
                     }];
2096
  let config = {
2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'taskOffTest',
    description: 'Sample code for event listening',
    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"
  };
  let createOffCallback = (progress) => {
    console.info('upload task completed.');
  };
2121
  request.agent.create(context, config).then((task)=> {
2122 2123
    task.on('progress', createOffCallback);
    task.off('progress', createOffCallback);
2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168
    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
  }).catch((err) => {
    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

取消订阅任务完成的监听。

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

**参数:**

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

**错误码:**

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

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

**示例:**

  ```js
  let context;
  let attachments = [{
                       name: "taskOffTest",
                       value: {
                         filename: "taskOffTest.avi",
                         mimetype: "application/octet-stream",
                         path: "./taskOffTest.avi",
                       }
                     }];
2169
  let config = {
2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'taskOffTest',
    description: 'Sample code for event listening',
    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"
  };
  let createOffCallback = (progress) => {
    console.info('upload task completed.');
  };
2194
  request.agent.create(context, config).then((task)=> {
2195
    task.on('completed', createOffCallback);
2196
    task.off('completed', createOffCallback);
2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241
    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
  }).catch((err) => {
    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

取消订阅任务失败的监听。

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

**参数:**

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

**错误码:**

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

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

**示例:**

  ```js
  let context;
  let attachments = [{
                       name: "taskOffTest",
                       value: {
                         filename: "taskOffTest.avi",
                         mimetype: "application/octet-stream",
                         path: "./taskOffTest.avi",
                       }
                     }];
2242
  let config = {
2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266
    action: request.agent.Action.UPLOAD,
    url: 'http://127.0.0.1',
    title: 'taskOffTest',
    description: 'Sample code for event listening',
    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"
  };
  let createOffCallback = (progress) => {
    console.info('upload task completed.');
  };
2267
  request.agent.create(context, config).then((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) => {
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 2307

**错误码:**

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

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

**示例:**

  ```js
2308
  let context;
2309
  let config = {
2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330
    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"
  };
2331
  request.agent.create(context, config).then((task) => {
2332 2333
    task.start((err) => {
      if (err) {
2334
        console.error(`Failed to start the download task, Code: ${err.code}, message: ${err.message}`);
2335 2336
        return;
      }
2337 2338 2339
      console.info(`Succeeded in starting a download task.`);
    });
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2340
  }).catch((err) => {
2341
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2342 2343 2344
  });
  ```

2345 2346 2347
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
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 2375 2376

### 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. |

**示例:**

  ```js
2377
  let context;
2378
  let config = {
2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399
    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"
  };
2400
  request.agent.create(context, config).then((task) => {
2401
    task.start().then(() => {
2402
      console.info(`Succeeded in starting a download task.`);
2403
    }).catch((err) => {
2404
      console.error(`Failed to start the download task, Code: ${err.code}, message: ${err.message}`);
2405
    });
2406
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2407
  }).catch((err) => {
2408
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2409 2410 2411
  });
  ```

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

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

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

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

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

**参数:**

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

**错误码:**

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

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

**示例:**

  ```js
2443
  let context;
2444
  let config = {
2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465
    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"
  };
2466
  request.agent.create(context, config).then((task) => {
2467 2468
    task.pause((err) => {
      if (err) {
2469
        console.error(`Failed to pause the download task, Code: ${err.code}, message: ${err.message}`);
2470 2471
        return;
      }
2472 2473 2474
      console.info(`Succeeded in pausing a download task. `);
    });
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2475
  }).catch((err) => {
2476
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
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 2504 2505 2506 2507
  });
  ```


### 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. |

**示例:**

  ```js
2508
  let context;
2509
  let config = {
2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530
    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"
  };
2531
  request.agent.create(context, config).then((task) => {
2532
    task.pause().then(() => {
2533
      console.info(`Succeeded in pausing a download task. `);
2534
    }).catch((err) => {
2535
      console.error(`Failed to pause the upload task, Code: ${err.code}, message: ${err.message}`);
2536
    });
2537
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2538
  }).catch((err) => {
2539
    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
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 2568 2569 2570 2571 2572
  });
  ```


### 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. |

**示例:**

  ```js
2573
  let context;
2574
  let config = {
2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595
    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"
  };
2596
  request.agent.create(context, config).then((task) => {
2597 2598 2599 2600 2601 2602
    task.resume((err) => {
      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. `);
2603
    });
2604
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2605
  }).catch((err) => {
2606
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
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 2634 2635 2636 2637 2638 2639
  });
  ```


### 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. |

**示例:**

  ```js
2640
  let context;
2641
  let config = {
2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662
    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"
  };
2663
  request.agent.create(context, config).then((task) => {
2664 2665 2666 2667 2668 2669
    task.resume().then(() => {
      console.info(`Succeeded in resuming a download task. `);
    }).catch((err) => {
      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}`);
2670
  }).catch((err) => {
2671
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687
  });
  ```


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

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

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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
2688
  | callback | function | 是 | 回调函数,停止任务成功,err为undefined,否则为错误对象 |
2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701

**错误码:**

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

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

**示例:**

  ```js
2702
  let context;
2703
  let config = {
2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724
    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"
  };
2725
  request.agent.create(context, config).then((task) => {
2726 2727 2728 2729 2730 2731
    task.stop((err) => {
      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. `);
2732
    });
2733
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2734
  }).catch((err) => {
2735
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765
  });
  ```


### 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. |

**示例:**

  ```js
2766
  let context;
2767
  let config = {
2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788
    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"
  };
2789
  request.agent.create(context, config).then((task) => {
2790 2791 2792 2793 2794 2795
    task.stop().then(() => {
      console.info(`Succeeded in stopping a download task. `);
    }).catch((err) => {
      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}`);
2796
  }).catch((err) => {
2797
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2798 2799 2800 2801 2802
  });
  ```

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

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

2805
创建要上传或下载的任务,并将其排入队列,应用最多支持创建10个任务,服务承载的任务数最多为300个。使用callback异步回调。
2806 2807 2808 2809 2810 2811 2812 2813 2814 2815


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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
2816
  | config | [Config](#config10) | 是 | 上传/下载任务的配置信息。 |
2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833
  | 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. |

**示例:**

  ```js
2834
  let context;
2835 2836 2837 2838 2839 2840 2841 2842
  let attachments = [{
                       name: "reeateTest",
                       value: {
                         filename: "reeateTest.avi",
                         mimetype: "application/octet-stream",
                         path: "./reeateTest.avi",
                       }
                     }];
2843
  let config = {
2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864
    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"
  };
2865
  request.agent.create(context, config, (err, task) => {
2866
    if (err) {
2867
      console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2868 2869
      return;
    }
2870
    console.info(`Succeeded in creating a download task. result: ${task.config}`);
2871 2872 2873
  });
  ```

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

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

2880
create(context: BaseContext, config: Config): Promise&lt;Task&gt;
2881

2882
创建要上传或下载的任务,并将其排入队列,应用最多支持创建10个任务,服务承载的任务数最多为300个。使用Promise异步回调。
2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893


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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
2894
  | config | [Config](#config10) | 是 | 上传/下载任务的配置信息。 |
2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| 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. |

**示例:**

  ```js
2916
  let context;
2917 2918 2919 2920 2921 2922 2923 2924
  let attachments = [{
                       name: "reeateTest",
                       value: {
                         filename: "reeateTest.avi",
                         mimetype: "application/octet-stream",
                         path: "./reeateTest.avi",
                       }
                     }];
2925
  let config = {
2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946
    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"
  };
2947 2948
  request.agent.create(context, config).then((task)=> {
    console.info(`Succeeded in creating a download task. result: ${task.config}`);
2949
  }).catch((err) => {
2950
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2951 2952 2953
  });
  ```

2954 2955 2956
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986

## 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. |

**示例:**

  ```js
  request.agent.remove("id", (err) => {
    if (err) {
2987
      console.error(`Failed to removing a download task, Code: ${err.code}, message: ${err.message}`);
2988 2989
      return;
    }
2990
    console.info(`Succeeded in creating a download task.`);
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 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027
  });
  ```


## 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. |

**示例:**

  ```js
  request.agent.remove("id").then(() => {
3028
    console.info(`Succeeded in removing a download task. `);
3029
  }).catch((err) => {
3030
    console.error(`Failed to remove a download task, Code: ${err.code}, message: ${err.message}`);
3031 3032 3033
  });
  ```

3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 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 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 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 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 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 3201 3202 3203 3204 3205 3206 3207 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 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 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 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351

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

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

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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | id | string | 是 | 任务id。 |
  | callback | AsyncCallback&lt;TaskInfo&gt; | 是 | 回调函数,返回任务详细信息。 |

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

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

**示例:**

  ```js
  request.agent.show("123456", (err, TaskInfo) => {
    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。 |

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;TaskInfo&gt; | Promise对象。返回任务详细信息的Promise对象。 |

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

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

**示例:**

  ```js
  request.agent.show("123456").then((TaskInfo) => {
    console.info(`Succeeded in showing a unload task.`);
  }).catch((err) => {
    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。 |
  | callback | AsyncCallback&lt;void&gt; | 是 | 回调函数,返回任务详细信息。 |

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

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

**示例:**

  ```js
  request.agent.touch("123456", "token", (err, TaskInfo) => {
    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。 |

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;TaskInfo&gt; | Promise对象。返回任务详细信息的Promise对象。 |

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

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

**示例:**

  ```js
  request.agent.touch("123456", "token").then((TaskInfo) => {
    console.info(`Succeeded in touching a unload task. `);
  }).catch((err) => {
    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. |

**示例:**

  ```js
  let filter ={
    bundle:"com.example.myapplication",
    action: request.agent.Action.UPLOAD,
    mode:request.agent.Mode.BACKGROUND
  }
  request.agent.search(filter, (err, data) => {
    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. |

**示例:**

  ```js
  let filter ={
    bundle:"com.example.myapplication",
    action: request.agent.Action.UPLOAD,
    mode: request.agent.Mode.BACKGROUND
  }
  request.agent.search(filter).then((data) => {
    console.info(`Succeeded in searching a unload task. `);
  }).catch((err) => {
    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。 |
  | callback | AsyncCallback&lt;TaskInfo&gt; | 是 | 回调函数,返回任务详细信息。 |

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

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

**示例:**

  ```js
  request.agent.query("123456", (err, TaskInfo) => {
    if (err) {
      console.error(`Failed to query a unload task, Code: ${err.code}, message: ${err.message}`);
      return;
    }
    console.info(`Succeeded in querying a unload task. result: ${TaskInfo.uid}`);
  });
  ```


## 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。 |

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;TaskInfo&gt; | Promise对象。返回任务详细信息的Promise对象。 |

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

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

**示例:**

  ```js
  request.agent.query("123456",).then((TaskInfo) => {
    console.info(`Succeeded in querying a unload task. result: ${TaskInfo.uid}`);
  }).catch((err) => {
    console.error(`Failed to query a unload task, Code: ${err.code}, message: ${err.message}`);
  });
  ```

3352
<!--no_check-->