js-apis-request.md 92.0 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 498 499 500 501
    if (result) {
      console.info('Succeeded in deleting the upload task.');
    } else {
      console.error(`Failed to delete the upload task. Code: ${err.code}, message: ${err.message}`);
    }
Z
zengyawen 已提交
502
  }).catch((err) => {
503
    console.error(`Failed to delete the upload task. Code: ${err.code}, message: ${err.message}`);
Z
zengyawen 已提交
504 505 506 507
  });
  ```


A
anyueling 已提交
508
### delete<sup>9+</sup>
Z
zengyawen 已提交
509

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

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

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

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

518 519
**参数:**

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

524
**示例:**
A
anyueling 已提交
525

526
  ```js
A
anyueling 已提交
527
  uploadTask.delete((err, result) => {
528 529 530 531 532 533 534 535 536
    if (err) {
      console.error(`Failed to delete the upload task. Code: ${err.code}, message: ${err.message}`);
      return;
    }
    if (result) {
      console.info('Succeeded in deleting the upload task.');
    } else {
      console.error(`Failed to delete the upload task. Code: ${err.code}, message: ${err.message}`);
    }
Z
zengyawen 已提交
537 538 539 540
  });
  ```


A
anyueling 已提交
541
### remove<sup>(deprecated)</sup>
542

A
anyueling 已提交
543
remove(): Promise&lt;boolean&gt;
544 545 546

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

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

549 550 551 552 553 554
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
555
  | 类型 | 说明 |
556
  | -------- | -------- |
A
anyueling 已提交
557
  | Promise&lt;boolean&gt; | 移除任务是否成功。true:成功,false:不成功。 |
558 559 560 561

**示例:**

  ```js
A
anyueling 已提交
562
  uploadTask.remove().then((result) => {
563 564 565 566 567
    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}`);
    }
568
  }).catch((err) => {
569
    console.error(`Failed to remove the upload task. Code: ${err.code}, message: ${err.message}`);
570 571 572 573
  });
  ```


A
anyueling 已提交
574
### remove<sup>(deprecated)</sup>
575

A
anyueling 已提交
576
remove(callback: AsyncCallback&lt;boolean&gt;): void
577 578 579

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

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

582 583 584 585 586 587
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
588
  | 参数名 | 类型 | 必填 | 说明 |
589
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
590
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务的回调函数。 |
591 592 593 594

**示例:**

  ```js
A
anyueling 已提交
595
  uploadTask.remove((err, result) => {
596 597 598 599 600 601 602 603 604
    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}`);
    }
605 606 607
  });
  ```

Z
zengyawen 已提交
608
## UploadConfig
609
上传任务的配置信息。
Z
zengyawen 已提交
610

A
anyueling 已提交
611 612
**需要权限**:ohos.permission.INTERNET

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

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

A
修改  
anyueling 已提交
623
## TaskState<sup>9+</sup>
624
上传任务信息,[on('complete' | 'fail')<sup>9+</sup>](#oncomplete--fail9)[off('complete' | 'fail')<sup>9+</sup>](#offcomplete--fail9)接口的回调参数。
A
anyueling 已提交
625 626 627 628 629 630 631 632 633 634

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

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

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

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

A
anyueling 已提交
639 640
**需要权限**:ohos.permission.INTERNET

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

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


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

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

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

Z
zengyawen 已提交
658
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
659
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
660 661
| name | string | 是 | 表示表单元素的名称。 |
| value | string | 是 | 表示表单元素的值。 |
Z
zengyawen 已提交
662

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

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

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

Z
zengyawen 已提交
669 670 671 672 673

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

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

674 675 676
**参数:**

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

681 682 683
**返回值:**

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

A
anyueling 已提交
687
**错误码:**
688

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

  | 错误码ID | 错误信息 |
  | -------- | -------- |
693 694
  | 13400001 | file operation error. |
  | 13400002 | bad file path. |
695
  | 13400003 | task service ability error. |
A
anyueling 已提交
696

697
**示例:**
A
anyueling 已提交
698

699
  ```js
700
  let downloadTask;
701
  let context;
A
anyueling 已提交
702
  try {
703 704
    request.downloadFile(context, { url: 'https://xxxx/xxxx.hap' }).then((data) => {
      downloadTask = data;
A
anyueling 已提交
705
    }).catch((err) => {
706
      console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
A
anyueling 已提交
707 708
    })
  } catch (err) {
709
    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
A
anyueling 已提交
710
  }
Z
zengyawen 已提交
711 712
  ```

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

Z
zengyawen 已提交
717

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

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

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

Z
zengyawen 已提交
724 725 726 727 728

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

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

729 730
**参数:**

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

A
anyueling 已提交
737
**错误码:**
738

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

  | 错误码ID | 错误信息 |
  | -------- | -------- |
743 744
  | 13400001 | file operation error. |
  | 13400002 | bad file path. |
745
  | 13400003 | task service ability error. |
A
anyueling 已提交
746

747
**示例:**
A
anyueling 已提交
748

749
  ```js
750
  let downloadTask;
751
  let context;
A
anyueling 已提交
752
  try {
753
    request.downloadFile(context, { url: 'https://xxxx/xxxxx.hap', 
A
anyueling 已提交
754
    filePath: 'xxx/xxxxx.hap'}, (err, data) => {
755 756 757 758 759
      if (err) {
        console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
        return;
      }
      downloadTask = data;
A
anyueling 已提交
760 761
    });
  } catch (err) {
762
    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
A
anyueling 已提交
763
  }
Z
zengyawen 已提交
764 765
  ```

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

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

A
anyueling 已提交
772
download(config: DownloadConfig): Promise&lt;DownloadTask&gt;
A
anyueling 已提交
773 774 775

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

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

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

A
anyueling 已提交
780 781 782 783 784 785 786 787 788 789 790 791 792 793 794
**需要权限**:ohos.permission.INTERNET

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

**参数:**

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

**返回值:**

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

A
anyueling 已提交
796
**示例:**
A
anyueling 已提交
797

A
anyueling 已提交
798 799
  ```js
  let downloadTask;
A
anyueling 已提交
800
  request.download({ url: 'https://xxxx/xxxx.hap' }).then((data) => {
801
    downloadTask = data;
A
anyueling 已提交
802
  }).catch((err) => {
803
    console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
A
anyueling 已提交
804 805 806 807
  })
  ```


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

A
anyueling 已提交
810
download(config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void
A
anyueling 已提交
811 812 813

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

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

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

A
anyueling 已提交
818 819 820 821 822 823
**需要权限**:ohos.permission.INTERNET

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

**参数:**

824
  | 参数名 | 类型 | 必填 | 说明 |
A
anyueling 已提交
825 826
  | -------- | -------- | -------- | -------- |
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
827
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
A
anyueling 已提交
828 829

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

A
anyueling 已提交
831 832
  ```js
  let downloadTask;
A
anyueling 已提交
833
  request.download({ url: 'https://xxxx/xxxxx.hap', 
A
anyueling 已提交
834
  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
835 836 837 838 839
    if (err) {
      console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
      return;
    }
    downloadTask = data;
A
anyueling 已提交
840 841
  });
  ```
842

Z
zengyawen 已提交
843 844
## DownloadTask

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


### on('progress')

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

852
订阅下载任务进度监听,同步方法,使用callback形式返回结果。
Z
zengyawen 已提交
853 854 855 856 857

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

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

858 859 860
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
861
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
862
  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
863
  | callback | function | 是 | 下载任务进度的回调函数。 |
Z
zengyawen 已提交
864 865 866

  回调函数的参数:

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

872
**示例:**
A
anyueling 已提交
873

874
  ```js
C
cy7717 已提交
875
  let progresCallback = (receivedSize, totalSize) => {
876
    console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
877
  };
C
cy7717 已提交
878
  downloadTask.on('progress', progresCallback);
Z
zengyawen 已提交
879 880 881 882 883
  ```


### off('progress')

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

886
取消订阅下载任务进度监听,同步方法。
Z
zengyawen 已提交
887 888 889 890 891

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

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

892 893
**参数:**

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

899
**示例:**
A
anyueling 已提交
900

901
  ```js
C
cy7717 已提交
902
  let progresCallback = (receivedSize, totalSize) => {
903
    console.info('Download delete progress notification.' + 'receivedSize:' + receivedSize + 'totalSize:' + totalSize);
C
cy7717 已提交
904 905
  };
  downloadTask.off('progress', progresCallback);
Z
zengyawen 已提交
906 907 908
  ```


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

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

913
订阅下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
914 915 916 917 918

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

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

919 920 921
**参数:**

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

926
**示例:**
A
anyueling 已提交
927

928
  ```js
929
  let completeCallback = () => {
930
    console.info('Download task completed.');
931 932
  };
  downloadTask.on('complete', completeCallback);
C
mod  
cy7717 已提交
933 934

  let pauseCallback = () => {
935
    console.info('Download task pause.');
C
mod  
cy7717 已提交
936 937 938 939
  };
  downloadTask.on('pause', pauseCallback);

  let removeCallback = () => {
940
    console.info('Download task remove.');
C
mod  
cy7717 已提交
941 942
  };
  downloadTask.on('remove', removeCallback);
Z
zengyawen 已提交
943 944 945
  ```


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

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

950
取消订阅下载任务相关的监听,同步方法。
Z
zengyawen 已提交
951 952 953 954 955

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

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

956 957 958
**参数:**

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

963
**示例:**
A
anyueling 已提交
964

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

  let pauseCallback = () => {
972
    console.info('Download delete pause notification.');
C
mod  
cy7717 已提交
973 974 975 976
  };
  downloadTask.off('pause', pauseCallback);

  let removeCallback = () => {
977
    console.info('Download delete remove notification.');
C
mod  
cy7717 已提交
978 979
  };
  downloadTask.off('remove', removeCallback);
Z
zengyawen 已提交
980 981 982 983 984
  ```


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

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

987
订阅下载任务失败监听,同步方法,使用callback形式返回结果。
Z
zengyawen 已提交
988 989 990 991 992

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

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

993 994 995
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
996
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
997 998
  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 是 | 下载失败的回调函数。 |
Z
zengyawen 已提交
999 1000 1001

  回调函数的参数:

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

1006
**示例:**
A
anyueling 已提交
1007

1008 1009
  ```js
  let failCallback = (err) => {
1010
    console.error(`Failed to download the task. Code: ${err.code}, message: ${err.message}`);
1011 1012
  };
  downloadTask.on('fail', failCallback);
Z
zengyawen 已提交
1013 1014 1015 1016 1017
  ```


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

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

1020
取消订阅下载任务失败监听,同步方法。
Z
zengyawen 已提交
1021 1022 1023 1024 1025

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

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

1026 1027 1028
**参数:**

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

1033
**示例:**
A
anyueling 已提交
1034

1035
  ```js
C
cy7717 已提交
1036
  let failCallback = (err) => {
1037
    console.error(`Failed to download the task. Code: ${err.code}, message: ${err.message}`);
C
cy7717 已提交
1038
  };
1039
  downloadTask.off('fail', failCallback);
Z
zengyawen 已提交
1040 1041
  ```

A
anyueling 已提交
1042
### delete<sup>9+</sup>
Z
zengyawen 已提交
1043

A
anyueling 已提交
1044
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1045 1046 1047 1048 1049 1050 1051

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

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

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

1052 1053 1054
**返回值:**

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

1058
**示例:**
A
anyueling 已提交
1059

1060
  ```js
A
anyueling 已提交
1061
  downloadTask.delete().then((result) => {
1062 1063 1064 1065 1066
  if (result) {
    console.info('Succeeded in removing the download task.');
  } else {
    console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
  }
Z
zengyawen 已提交
1067
  }).catch ((err) => {
1068
    console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
Z
zengyawen 已提交
1069 1070 1071 1072
  });
  ```


A
anyueling 已提交
1073
### delete<sup>9+</sup>
Z
zengyawen 已提交
1074

A
anyueling 已提交
1075
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
1076 1077 1078 1079 1080 1081 1082

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

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

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

1083 1084
**参数:**

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

1089
**示例:**
A
anyueling 已提交
1090

1091
  ```js
A
anyueling 已提交
1092
  downloadTask.delete((err, result)=>{
1093 1094 1095 1096 1097 1098 1099 1100 1101
    if(err) {
      console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    } 
    if (result) {
      console.info('Succeeded in removing the download task.');
    } else {
      console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
    } 
Z
zengyawen 已提交
1102 1103 1104 1105
  });
  ```


A
anyueling 已提交
1106
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1107

A
anyueling 已提交
1108
getTaskInfo(): Promise&lt;DownloadInfo&gt;
Z
zengyawen 已提交
1109 1110 1111 1112 1113 1114 1115

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

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

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

1116 1117 1118
**返回值:**

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

1122
**示例:**
A
anyueling 已提交
1123

1124
  ```js
A
anyueling 已提交
1125
  downloadTask.getTaskInfo().then((downloadInfo) => {    
1126
    console.info('Succeeded in querying the download task')
Z
zengyawen 已提交
1127
  }) .catch((err) => {
1128
    console.error(`Failed to query the download task. Code: ${err.code}, message: ${err.message}`)
Z
zengyawen 已提交
1129 1130 1131 1132
  });
  ```


A
anyueling 已提交
1133
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1134

A
anyueling 已提交
1135
getTaskInfo(callback: AsyncCallback&lt;DownloadInfo&gt;): void
Z
zengyawen 已提交
1136 1137 1138 1139 1140 1141 1142

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

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

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

1143 1144
**参数:**

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

1149
**示例:**
A
anyueling 已提交
1150

1151
  ```js
A
anyueling 已提交
1152
  downloadTask.getTaskInfo((err, downloadInfo)=>{
1153 1154 1155 1156 1157
    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 已提交
1158 1159 1160 1161
  });
  ```


A
anyueling 已提交
1162
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1163

A
anyueling 已提交
1164
getTaskMimeType(): Promise&lt;string&gt;
Z
zengyawen 已提交
1165 1166 1167 1168 1169 1170 1171

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

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

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

1172 1173 1174
**返回值:**

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

1178
**示例:**
A
anyueling 已提交
1179

1180
  ```js
A
anyueling 已提交
1181
  downloadTask.getTaskMimeType().then((data) => {    
1182
    console.info('Succeeded in querying the download MimeType');
Z
zengyawen 已提交
1183
  }).catch((err) => {
1184
    console.error(`Failed to query the download MimeType. Code: ${err.code}, message: ${err.message}`)
Z
zengyawen 已提交
1185 1186 1187 1188
  });
  ```


A
anyueling 已提交
1189
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1190

A
anyueling 已提交
1191
getTaskMimeType(callback: AsyncCallback&lt;string&gt;): void;
Z
zengyawen 已提交
1192 1193 1194 1195 1196 1197 1198

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

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

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

1199 1200
**参数:**

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

1205
**示例:**
A
anyueling 已提交
1206

1207
  ```js
A
anyueling 已提交
1208
  downloadTask.getTaskMimeType((err, data)=>{
1209 1210 1211 1212 1213
    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 已提交
1214 1215 1216 1217
  });
  ```


A
anyueling 已提交
1218
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1219

A
anyueling 已提交
1220
suspend(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1221 1222 1223 1224 1225 1226 1227

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

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

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

1228 1229 1230
**返回值:**

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

1234
**示例:**
A
anyueling 已提交
1235

1236
  ```js
A
anyueling 已提交
1237
  downloadTask.suspend().then((result) => {    
1238 1239 1240 1241 1242
    if (result) {
      console.info('Succeeded in pausing the download task.');
    } else {
      console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
    }
Z
zengyawen 已提交
1243
  }).catch((err) => {
1244
    console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
Z
zengyawen 已提交
1245 1246 1247 1248
  });
  ```


A
anyueling 已提交
1249
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1250

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

Z
zengyawen 已提交
1253 1254 1255 1256 1257 1258
暂停下载任务,异步方法,使用callback形式返回结果。

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

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

1259 1260
**参数:**

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

1265
**示例:**
A
anyueling 已提交
1266

1267
  ```js
A
anyueling 已提交
1268
  downloadTask.suspend((err, result)=>{
1269 1270 1271 1272 1273 1274 1275 1276 1277
    if(err) {
      console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    }
    if (result) {
      console.info('Succeeded in pausing the download task.');
    } else {
      console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
    }
Z
zengyawen 已提交
1278 1279 1280 1281
  });
  ```


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

A
anyueling 已提交
1284
restore(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1285 1286 1287 1288 1289 1290 1291

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

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

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

1292
**返回值:**
1293 1294

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

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

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


A
anyueling 已提交
1314
### restore<sup>9+</sup>
Z
zengyawen 已提交
1315

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

Z
zengyawen 已提交
1318 1319 1320 1321 1322 1323
重新启动暂停的下载任务,异步方法,使用callback形式返回结果。

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

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

1324 1325
**参数:**

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

1330
**示例:**
A
anyueling 已提交
1331

1332
  ```js
A
anyueling 已提交
1333
  downloadTask.restore((err, result)=>{
1334 1335 1336 1337 1338 1339 1340 1341 1342
    if (err) {
      console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    } 
    if (result) {
      console.info('Succeeded in resuming the download task.');
    } else {
      console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
    }
Z
zengyawen 已提交
1343 1344 1345 1346
  });
  ```


A
anyueling 已提交
1347 1348 1349
### remove<sup>(deprecated)</sup>

remove(): Promise&lt;boolean&gt;
1350 1351 1352

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

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

1355 1356 1357 1358 1359 1360
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1361
  | 类型 | 说明 |
1362
  | -------- | -------- |
A
anyueling 已提交
1363
  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
1364 1365 1366 1367

**示例:**

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


A
anyueling 已提交
1380
### remove<sup>(deprecated)</sup>
1381

A
anyueling 已提交
1382
remove(callback: AsyncCallback&lt;boolean&gt;): void
1383 1384 1385

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

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

1388 1389 1390 1391 1392 1393
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1394
  | 参数名 | 类型 | 必填 | 说明 |
1395
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1396
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
1397 1398 1399 1400

**示例:**

  ```js
A
anyueling 已提交
1401
  downloadTask.remove((err, result)=>{
1402 1403 1404 1405 1406 1407 1408 1409 1410
    if(err) {
      console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    } 
    if (result) {
      console.info('Succeeded in removing the download task.');
    } else {
      console.error(`Failed to remove the download task. Code: ${err.code}, message: ${err.message}`);
    } 
1411 1412 1413 1414
  });
  ```


A
anyueling 已提交
1415
### query<sup>(deprecated)</sup>
1416

A
anyueling 已提交
1417
query(): Promise&lt;DownloadInfo&gt;
1418 1419 1420

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

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

1423 1424 1425 1426
**需要权限**:ohos.permission.INTERNET

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

1427 1428
**返回值:**

A
anyueling 已提交
1429 1430 1431
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
1432 1433 1434 1435

**示例:**

  ```js
A
anyueling 已提交
1436
  downloadTask.query().then((downloadInfo) => {    
1437
    console.info('Succeeded in querying the download task.')
1438
  }) .catch((err) => {
1439
    console.error(`Failed to query the download task. Code: ${err.code}, message: ${err.message}`)
1440 1441 1442 1443
  });
  ```


A
anyueling 已提交
1444
### query<sup>(deprecated)</sup>
1445

A
anyueling 已提交
1446
query(callback: AsyncCallback&lt;DownloadInfo&gt;): void
1447 1448 1449

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

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

1452 1453 1454 1455 1456 1457
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1458
  | 参数名 | 类型 | 必填 | 说明 |
1459
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1460
  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
1461 1462 1463 1464

**示例:**

  ```js
A
anyueling 已提交
1465
  downloadTask.query((err, downloadInfo)=>{
1466 1467 1468 1469 1470
    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.');
    }
1471 1472 1473 1474
  });
  ```


A
anyueling 已提交
1475
### queryMimeType<sup>(deprecated)</sup>
1476

A
anyueling 已提交
1477
queryMimeType(): Promise&lt;string&gt;
1478 1479 1480

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

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

1483 1484 1485 1486 1487 1488
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1489
  | 类型 | 说明 |
1490
  | -------- | -------- |
A
anyueling 已提交
1491
  | Promise&lt;string&gt; | 查询下载任务的MimeType。 |
1492 1493 1494 1495

**示例:**

  ```js
A
anyueling 已提交
1496
  downloadTask.queryMimeType().then((data) => {    
1497
    console.info('Succeededto in querying the download MimeType.');
1498
  }).catch((err) => {
1499
    console.error(`Failed to query the download MimeType. Code: ${err.code}, message: ${err.message}`)
1500 1501 1502 1503
  });
  ```


A
anyueling 已提交
1504
### queryMimeType<sup>(deprecated)</sup>
1505

A
anyueling 已提交
1506
queryMimeType(callback: AsyncCallback&lt;string&gt;): void;
1507 1508 1509

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

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

1512 1513 1514 1515 1516 1517
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1518
  | 参数名 | 类型 | 必填 | 说明 |
1519
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1520
  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的MimeType的回调函数。 |
1521 1522 1523 1524

**示例:**

  ```js
A
anyueling 已提交
1525
  downloadTask.queryMimeType((err, data)=>{
1526 1527 1528 1529 1530
    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.');
    }
1531 1532 1533 1534
  });
  ```


A
anyueling 已提交
1535
### pause<sup>(deprecated)</sup>
1536

A
anyueling 已提交
1537
pause(): Promise&lt;void&gt;
1538 1539 1540

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

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

1543 1544 1545 1546 1547 1548
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1549
  | 类型 | 说明 |
1550
  | -------- | -------- |
A
anyueling 已提交
1551
  | Promise&lt;void&gt; | 暂停下载任务是否成功。 |
1552 1553 1554 1555

**示例:**

  ```js
A
anyueling 已提交
1556
  downloadTask.pause().then((result) => {    
1557 1558 1559 1560 1561
    if (result) {
      console.info('Succeeded in pausing the download task.');
    } else {
      console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
    }
1562
  }).catch((err) => {
1563
    console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
1564 1565 1566 1567
  });
  ```


A
anyueling 已提交
1568
### pause<sup>(deprecated)</sup>
1569

A
anyueling 已提交
1570 1571 1572
pause(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9-1)替代。
1573 1574 1575 1576 1577 1578 1579 1580 1581

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

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

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

**参数:**

A
anyueling 已提交
1582
  | 参数名 | 类型 | 必填 | 说明 |
1583
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1584
  | callback | AsyncCallback&lt;void&gt; | 是 | 暂停下载任务的回调函数。 |
1585 1586 1587 1588

**示例:**

  ```js
A
anyueling 已提交
1589
  downloadTask.pause((err, result)=>{
1590 1591 1592 1593 1594 1595 1596 1597 1598
    if(err) {
      console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    }
    if (result) {
      console.info('Succeeded in pausing the download task.');
    } else {
      console.error(`Failed to pause the download task. Code: ${err.code}, message: ${err.message}`);
    }
1599 1600 1601 1602
  });
  ```


A
anyueling 已提交
1603
### resume<sup>(deprecated)</sup>
1604

A
anyueling 已提交
1605
resume(): Promise&lt;void&gt;
1606 1607 1608

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

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

1611 1612 1613 1614
**需要权限**:ohos.permission.INTERNET

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

1615
**返回值:**
1616

A
anyueling 已提交
1617
  | 类型 | 说明 |
1618
  | -------- | -------- |
A
anyueling 已提交
1619
  | Promise&lt;void&gt; | 重新启动暂停的下载任务是否成功。 |
1620 1621 1622 1623

**示例:**

  ```js
A
anyueling 已提交
1624
  downloadTask.resume().then((result) => {
1625 1626 1627 1628 1629 1630
    if (result) {
      console.info('Succeeded in resuming the download task.')
    } else {
      console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
    }
    console.info('Succeeded in resuming the download task.')
1631
  }).catch((err) => {
1632
    console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
1633 1634 1635 1636
  });
  ```


A
anyueling 已提交
1637
### resume<sup>(deprecated)</sup>
1638

A
anyueling 已提交
1639 1640 1641
resume(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9-1)替代。
1642 1643 1644 1645 1646 1647 1648 1649 1650

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

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

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

**参数:**

A
anyueling 已提交
1651
  | 参数名 | 类型 | 必填 | 说明 |
1652
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1653
  | callback | AsyncCallback&lt;void&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
1654 1655 1656 1657

**示例:**

  ```js
A
anyueling 已提交
1658
  downloadTask.resume((err, result)=>{
1659 1660 1661 1662 1663 1664 1665 1666 1667
    if (err) {
      console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
      return;
    }
    if (result) {
      console.info('Succeeded in resuming the download task.');
    } else {
      console.error(`Failed to resume the download task. Code: ${err.code}, message: ${err.message}`);
    }
1668 1669 1670 1671
  });
  ```


Z
zengyawen 已提交
1672
## DownloadConfig
1673
下载任务的配置信息。
Z
zengyawen 已提交
1674

A
anyueling 已提交
1675 1676
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1677 1678 1679 1680 1681
**系统能力**: SystemCapability.MiscServices.Download

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


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

A
anyueling 已提交
1695 1696
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1697 1698
**系统能力**: SystemCapability.MiscServices.Download

1699
| 名称 | 类型 |必填 |  说明 |
1700
| -------- | -------- | -------- | -------- |
1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711
| 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)。 |
1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916

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


## Conf<sup>10+</sup> 
上传/下载任务的配置信息。

**系统能力**: 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;,默认为空。 |
| saveas | string | 否 | 保存下载文件的路径,包括如下两种:<br/>-相对路径,如"./xxx/yyy/zzz.html"、"xxx/yyy/zzz.html",位于调用方的缓存路径下。<br/>-uri路径,类似"datashare://bundle/xxx/yyy/zzz.html",具备访问url路径权限的应用可使用,当前暂不支持。<br/>默认为相对路径,即下载至应用当前缓存路径下。 |
| network | [Network](#network10) | 否 | 网络选项,当前支持无线网络WIFI和蜂窝数据网络CELLULAR,默认为ANY(WIFI或CELLULAR)。 |
| metered | boolean | 否 | 是否允许在按流量计费的网络中工作,默认为false。 |
| roaming | boolean | 否 | 是否允许在漫游网络中工作,默认为true。 |
| retry | boolean | 否 | 是否为后台任务启用自动重试,仅应用于后台任务,默认为true。 |
| redirect | boolean | 否 | 是否允许重定向,默认为true。 |
| 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

| 名称 | 值 |说明 |
| -------- | -------- |-------- |
| INITIALIZED | 0x00 |通过配置信息([Conf](#conf10))创建初始化任务。 |
| 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。 |


## Broken<sup>10+</sup>  

定义任务失败的原因。

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

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


## TaskInfo<sup>10+</sup> 
查询结果的任务信息数据结构,提供普通查询和高级查询,两种字段的可见范围不同。

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

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| uid | string | 否 | 应用程序的UID,仅用于系统查询。<br/>**系统接口**:此接口为系统接口。|
| bundle | string | 否 | 应用程序的包名,仅用于系统查询。<br/>**系统接口**:此接口为系统接口。|
| url | string | 否 | 任务的url,仅适用于普通应用查询,系统查询返回空字串。 |
| data | string \| Array&lt;[FormItem](#formitem10)&gt; | 否 | 任务值。 |
| 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 | 是 | 后台任务的进度通知策略。 |
| ctime | string | 是 | UTC模式中创建任务的日期和时间,由当前设备的系统生成的。|
| mtime | string | 是 | UTC模式中修改任务的日期和时间,由当前设备的系统生成的。|
| retry | boolean | 是 | 任务的重试开关,仅应用于后台任务。 |
| tries | number | 是 | 任务的尝试次数。 |
| broken | [Broken](#broken10) | 是 | 任务的失败原因。<br/>-OTHERS表示其他故障。<br/>-DISCONNECT表示网络断开连接。<br/>-TIMEOUT表示任务超时。<br/>-PROTOCOL表示协议错误。<br/>-FSIO表示文件系统io错误。|
| 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,在系统上是唯一的,由系统自动生成。 |
| conf | [Conf](#conf10) | 是 | 任务的配置信息。 |


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

on(event: "progress" | "completed" | "failed", callback: (progress: Progress) =&gt; void): void

订阅任务相关的监听。

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

**参数:**

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

**错误码:**

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

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

**示例:**

  ```js
1917
  let context;
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
  let attachments = [{
                       name: "taskOnTest",
                       value: {
                         filename: "taskOnTest.avi",
                         mimetype: "application/octet-stream",
                         path: "./taskOnTest.avi",
                       }
                     }];
  let conf = {
    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.');
  };
1951
  request.agent.create(context, conf).then((task)=> {
1952 1953 1954
    task.on('progress', createOnCallback);
    task.on('completed', createOnCallback);
    task.on('failed', createOnCallback);
1955
    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
1956
  }).catch((err) => {
1957
    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
1958 1959 1960
  });
  ```

1961 1962 1963
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976

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

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

取消订阅任务相关的监听。

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
1977
  | event | string | 是 | 订阅的事件类型。<br>- 取值为'progress',表示任务进度;<br/>- 取值为'completed',表示任务已完成;<br/>- 取值为'failed',表示任务失败。 |
1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990
  | callback | function | 否 | 发生相关的事件时触发该回调方法,返回任务进度的数据结构|

**错误码:**

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

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

**示例:**

  ```js
1991
  let context;
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 2023 2024
  let attachments = [{
                       name: "taskOffTest",
                       value: {
                         filename: "taskOffTest.avi",
                         mimetype: "application/octet-stream",
                         path: "./taskOffTest.avi",
                       }
                     }];
  let conf = {
    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.');
  };
2025
  request.agent.create(context, conf).then((task)=> {
2026 2027 2028 2029 2030 2031
    task.on('progress', createOffCallback);
    task.on('completed', createOffCallback);
    task.on('failed', createOffCallback);
    task.off('progress', createOffCallback);
    task.off('completed', createOffCallback);
    task.off('failed', createOffCallback);
2032
    console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
2033
  }).catch((err) => {
2034
    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
2035 2036 2037
  });
  ```

2038 2039 2040
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069

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

start(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. |
  | 21900007 | task state error. |

**示例:**

  ```js
2070
  let context;
2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092
  let conf = {
    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"
  };
2093
  request.agent.create(context, conf).then((task) => {
2094 2095
    task.start((err) => {
      if (err) {
2096
        console.error(`Failed to start the download task, Code: ${err.code}, message: ${err.message}`);
2097 2098
        return;
      }
2099 2100 2101
      console.info(`Succeeded in starting a download task.`);
    });
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2102
  }).catch((err) => {
2103
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2104 2105 2106
  });
  ```

2107 2108 2109
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138

### 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
2139
  let context;
2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161
  let conf = {
    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"
  };
2162
  request.agent.create(context, conf).then((task) => {
2163
    task.start().then(() => {
2164
      console.info(`Succeeded in starting a download task.`);
2165
    }).catch((err) => {
2166
      console.error(`Failed to start the download task, Code: ${err.code}, message: ${err.message}`);
2167
    });
2168
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2169
  }).catch((err) => {
2170
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2171 2172 2173
  });
  ```

2174 2175 2176
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204

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

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

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

**系统能力**: 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
2205
  let context;
2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227
  let conf = {
    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"
  };
2228
  request.agent.create(context, conf).then((task) => {
2229 2230
    task.pause((err) => {
      if (err) {
2231
        console.error(`Failed to pause the download task, Code: ${err.code}, message: ${err.message}`);
2232 2233
        return;
      }
2234 2235 2236
      console.info(`Succeeded in pausing a download task. `);
    });
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2237
  }).catch((err) => {
2238
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269
  });
  ```


### 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
2270
  let context;
2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292
  let conf = {
    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"
  };
2293
  request.agent.create(context, conf).then((task) => {
2294
    task.pause().then(() => {
2295
      console.info(`Succeeded in pausing a download task. `);
2296
    }).catch((err) => {
2297
      console.error(`Failed to pause the upload task, Code: ${err.code}, message: ${err.message}`);
2298
    });
2299
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2300
  }).catch((err) => {
2301
    console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334
  });
  ```


### 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
2335
  let context;
2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357
  let conf = {
    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"
  };
2358 2359 2360 2361 2362 2363 2364
  request.agent.create(context, conf).then((task) => {
    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. `);
2365
    });
2366
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2367
  }).catch((err) => {
2368
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401
  });
  ```


### 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
2402
  let context;
2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424
  let conf = {
    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"
  };
2425 2426 2427 2428 2429 2430 2431
  request.agent.create(context, conf).then((task) => {
    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}`);
2432
  }).catch((err) => {
2433
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449
  });
  ```


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

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

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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
2450
  | callback | function | 是 | 回调函数,停止任务成功,err为undefined,否则为错误对象 |
2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463

**错误码:**

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

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

**示例:**

  ```js
2464
  let context;
2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486
  let conf = {
    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"
  };
2487 2488 2489 2490 2491 2492 2493
  request.agent.create(context, conf).then((task) => {
    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. `);
2494
    });
2495
    console.info(`Succeeded in creating a download task. result: ${task.tid}`);
2496
  }).catch((err) => {
2497
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527
  });
  ```


### 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
2528
  let context;
2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550
  let conf = {
    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"
  };
2551 2552 2553 2554 2555 2556 2557
  request.agent.create(context, conf).then((task) => {
    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}`);
2558
  }).catch((err) => {
2559
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595
  });
  ```

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

create(context: BaseContext, conf: Conf, callback: AsyncCallback&lt;Task&gt;): void

创建要上传或下载的任务,并将其排入队列,使用callback异步回调。


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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | conf | [Conf](#conf10) | 是 | 上传/下载任务的配置信息。 |
  | 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
2596
  let context;
2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626
  let attachments = [{
                       name: "reeateTest",
                       value: {
                         filename: "reeateTest.avi",
                         mimetype: "application/octet-stream",
                         path: "./reeateTest.avi",
                       }
                     }];
  let conf = {
    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"
  };
2627
  request.agent.create(context, conf, (err, task) => {
2628
    if (err) {
2629
      console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2630 2631
      return;
    }
2632
    console.info(`Succeeded in creating a download task. result: ${task.conf}`);
2633 2634 2635
  });
  ```

2636 2637 2638
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677

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

create(context: BaseContext, conf: Conf): Promise&lt;Task&gt;

创建要上传或下载的任务,并将其排入队列。使用Promise异步回调。


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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
  | conf | [Conf](#conf10) | 是 | 上传/下载任务的配置信息。 |

**返回值:** 

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| 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
2678
  let context;
2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708
  let attachments = [{
                       name: "reeateTest",
                       value: {
                         filename: "reeateTest.avi",
                         mimetype: "application/octet-stream",
                         path: "./reeateTest.avi",
                       }
                     }];
  let conf = {
    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"
  };
2709 2710
  request.agent.create(context, conf).then((task)=> {
    console.info(`Succeeded in creating a download task. result: ${task.conf}`);
2711
  }).catch((err) => {
2712
    console.error(`Failed to create a download task, Code: ${err.code}, message: ${err.message}`);
2713 2714 2715
  });
  ```

2716 2717 2718
> **说明:**
>
> 示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748

## 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) {
2749
      console.error(`Failed to removing a download task, Code: ${err.code}, message: ${err.message}`);
2750 2751
      return;
    }
2752
    console.info(`Succeeded in creating a download task.`);
2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789
  });
  ```


## 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(() => {
2790
    console.info(`Succeeded in removing a download task. `);
2791
  }).catch((err) => {
2792
    console.error(`Failed to remove a download task, Code: ${err.code}, message: ${err.message}`);
2793 2794 2795
  });
  ```

2796
<!--no_check-->