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

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

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


## 导入模块


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

## 常量

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

82 83 84
**参数:**

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

A
anyueling 已提交
89

90 91 92
**返回值:**

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

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

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

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

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

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


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

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

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

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

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

137 138
**参数:**

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

A
anyueling 已提交
145
**错误码:**
146

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

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

153
**示例:**
A
anyueling 已提交
154

155
  ```js
156
  let uploadTask;
A
anyueling 已提交
157
  let uploadConfig = {
A
anyueling 已提交
158
    url: 'http://patch',
A
anyueling 已提交
159 160 161 162 163
    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 已提交
164 165
  try {
    request.uploadFile(globalThis.abilityContext, uploadConfig, (err, data) => {
Z
zengyawen 已提交
166 167 168 169 170
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
A
anyueling 已提交
171 172 173 174
    });
  } catch (err) {
    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
  }
Z
zengyawen 已提交
175
  ```
A
anyueling 已提交
176

A
anyueling 已提交
177 178 179
## request.upload<sup>(deprecated)</sup>

upload(config: UploadConfig): Promise&lt;UploadTask&gt;
A
anyueling 已提交
180 181 182

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

A
anyueling 已提交
183 184 185
**模型约束**:此接口仅可在FA模型下使用

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

A
anyueling 已提交
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203
**需要权限**:ohos.permission.INTERNET

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

**参数:**

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

**返回值:**

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

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

A
anyueling 已提交
205 206 207
  ```js
  let uploadTask;
  let uploadConfig = {
A
anyueling 已提交
208
    url: 'http://patch',
A
anyueling 已提交
209 210
    header: { key1: "value1", key2: "value2" },
    method: "POST",
A
anyueling 已提交
211 212
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
A
anyueling 已提交
213
  };
A
anyueling 已提交
214
  request.upload(uploadConfig).then((data) => {
A
anyueling 已提交
215 216 217
      uploadTask = data;
  }).catch((err) => {
      console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
A
anyueling 已提交
218
  })
A
anyueling 已提交
219 220 221
  ```


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

A
anyueling 已提交
224
upload(config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
A
anyueling 已提交
225 226 227

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

A
anyueling 已提交
228 229 230
**模型约束**:此接口仅可在FA模型下使用

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

A
anyueling 已提交
232 233 234 235 236
**需要权限**:ohos.permission.INTERNET

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

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

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

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

A
anyueling 已提交
245 246 247
  ```js
  let uploadTask;
  let uploadConfig = {
A
anyueling 已提交
248
    url: 'http://patch',
A
anyueling 已提交
249 250 251 252 253
    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 已提交
254
  request.upload(uploadConfig, (err, data) => {
A
anyueling 已提交
255 256 257 258 259 260 261
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```
Z
zengyawen 已提交
262 263 264

## UploadTask

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

Z
zengyawen 已提交
267 268 269 270


### on('progress')

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

273
订阅上传任务进度监听,同步方法,使用callback形式返回结果。
Z
zengyawen 已提交
274 275 276 277 278

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

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

279 280 281
**参数:**

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

286
  回调函数的参数
Z
zengyawen 已提交
287

288 289
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
290 291
| uploadedSize | number | 是 | 当前已上传文件大小,单位为B。 |
| totalSize | number | 是 | 上传文件的总大小,单位为B。 |
Z
zengyawen 已提交
292

293
**示例:**
A
anyueling 已提交
294

295
  ```js
296
  let upProgressCallback = (uploadedSize, totalSize) => {
Z
zengyawen 已提交
297
      console.info("upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize);
298 299
  };
  uploadTask.on('progress', upProgressCallback);
Z
zengyawen 已提交
300 301 302 303 304
  ```


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

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

307
订阅上传任务HTTP标头监听,同步方法,使用callback形式返回结果。
Z
zengyawen 已提交
308 309 310 311 312

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

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

313 314 315
**参数:**

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

  回调函数的参数:

322 323 324
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
325

326
**示例:**
A
anyueling 已提交
327

328
  ```js
329
  let headerCallback = (headers) => {
Z
zengyawen 已提交
330
      console.info("upOnHeader headers:" + JSON.stringify(headers));
331 332
  };
  uploadTask.on('headerReceive', headerCallback);
Z
zengyawen 已提交
333 334 335
  ```


A
修改  
anyueling 已提交
336
### on('complete' | 'fail')<sup>9+</sup>
A
anyueling 已提交
337 338 339

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

340
订阅上传任务完成或失败监听,同步方法,使用callback形式返回结果。
A
anyueling 已提交
341 342 343 344 345 346 347 348 349 350

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

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

**参数:**

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

  回调函数的参数

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

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

A
anyueling 已提交
361
  ```js
362
  let upCompleteCallback = (taskStates) => {
A
修改  
anyueling 已提交
363
    for (let i = 0; i < taskStates.length; i++ ) {
364
        console.info("upOnComplete taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
365
    }
366
  };
C
cy7717 已提交
367
  uploadTask.on('complete', upCompleteCallback);
A
anyueling 已提交
368

369
  let upFailCallback = (taskStates) => {
A
修改  
anyueling 已提交
370 371
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnFail taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
372
    }
373 374
  };
  uploadTask.on('fail', upFailCallback);
A
anyueling 已提交
375 376 377
  ```


Z
zengyawen 已提交
378 379
### off('progress')

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

382
取消订阅上传任务进度监听,同步方法。
Z
zengyawen 已提交
383 384 385 386 387

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

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

388 389
**参数:**

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

395
**示例:**
A
anyueling 已提交
396

397
  ```js
C
cy7717 已提交
398 399 400
  let upProgressCallback = (uploadedSize, totalSize) => {
      console.info('Upload delete progress notification.' + 'totalSize:' + totalSize + 'uploadedSize:' + uploadedSize);
  };
401
  uploadTask.off('progress', upProgressCallback);
Z
zengyawen 已提交
402 403 404 405 406
  ```


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

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

409
取消订阅上传任务HTTP标头监听,同步方法。
Z
zengyawen 已提交
410 411 412 413 414

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

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

415 416
**参数:**

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

422
**示例:**
A
anyueling 已提交
423

424
  ```js
C
cy7717 已提交
425
  let headerCallback = (header) => {
C
mod  
cy7717 已提交
426
      console.info(`Upload delete headerReceive notification. header: ${JSON.stringify(header)}`);
C
cy7717 已提交
427
  };
428
  uploadTask.off('headerReceive', headerCallback);
Z
zengyawen 已提交
429 430
  ```

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

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

435
取消订阅上传任务完成或失败监听,同步方法。
A
anyueling 已提交
436 437 438 439 440 441 442 443 444 445

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

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

**参数:**

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

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

A
anyueling 已提交
450
  ```js
C
cy7717 已提交
451 452 453 454 455 456
  let upCompleteCallback = (taskStates) => {
    console.info('Upload delete complete notification.');
    for (let i = 0; i < taskStates.length; i++ ) {
        console.info('taskState:' + JSON.stringify(taskStates[i]));
    }
  };
457
  uploadTask.off('complete', upCompleteCallback);
A
anyueling 已提交
458

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

A
anyueling 已提交
468 469
### delete<sup>9+</sup>
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
470 471 472 473 474 475 476

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

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

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

477 478 479
**返回值:**

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

483
**示例:**
A
anyueling 已提交
484

485
  ```js
A
anyueling 已提交
486
  uploadTask.delete().then((result) => {
Z
zengyawen 已提交
487 488 489 490 491 492 493 494 495 496 497
      if (result) {
          console.info('Upload task removed successfully. ');
      } else {
          console.error('Failed to remove the upload task. ');
      }
  }).catch((err) => {
      console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err));
  });
  ```


A
anyueling 已提交
498
### delete<sup>9+</sup>
Z
zengyawen 已提交
499

A
anyueling 已提交
500
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
501 502 503 504 505 506 507

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

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

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

508 509
**参数:**

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

514
**示例:**
A
anyueling 已提交
515

516
  ```js
A
anyueling 已提交
517
  uploadTask.delete((err, result) => {
Z
zengyawen 已提交
518 519 520 521 522 523 524 525 526 527 528 529 530
      if (err) {
          console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err));
          return;
      }
      if (result) {
          console.info('Upload task removed successfully.');
      } else {
          console.error('Failed to remove the upload task.');
      }
  });
  ```


A
anyueling 已提交
531
### remove<sup>(deprecated)</sup>
532

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

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

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

539 540 541 542 543 544
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

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

**示例:**

  ```js
A
anyueling 已提交
552
  uploadTask.remove().then((result) => {
553 554 555 556 557 558 559 560 561 562 563
      if (result) {
          console.info('Upload task removed successfully. ');
      } else {
          console.error('Failed to remove the upload task. ');
      }
  }).catch((err) => {
      console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err));
  });
  ```


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

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

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

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

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

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

**参数:**

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

**示例:**

  ```js
A
anyueling 已提交
585
  uploadTask.remove((err, result) => {
586 587 588 589 590 591 592 593 594 595 596 597
      if (err) {
          console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err));
          return;
      }
      if (result) {
          console.info('Upload task removed successfully.');
      } else {
          console.error('Failed to remove the upload task.');
      }
  });
  ```

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

Z
zengyawen 已提交
659 660 661 662 663

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

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

664 665 666
**参数:**

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

671 672 673
**返回值:**

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

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

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

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

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

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


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

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

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

Z
zengyawen 已提交
709 710 711 712 713

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

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

714 715
**参数:**

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

A
anyueling 已提交
722
**错误码:**
723

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

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

732
**示例:**
A
anyueling 已提交
733

734
  ```js
735
  let downloadTask;
A
anyueling 已提交
736 737 738 739 740 741 742 743 744 745 746 747
  try {
    request.downloadFile(globalThis.abilityContext, { url: 'https://xxxx/xxxxx.hap', 
    filePath: 'xxx/xxxxx.hap'}, (err, data) => {
        if (err) {
            console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
            return;
        }
        downloadTask = data;
    });
  } catch (err) {
    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
  }
Z
zengyawen 已提交
748 749
  ```

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

A
anyueling 已提交
752
download(config: DownloadConfig): Promise&lt;DownloadTask&gt;
A
anyueling 已提交
753 754 755

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

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

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

A
anyueling 已提交
760 761 762 763 764 765 766 767 768 769 770 771 772 773 774
**需要权限**:ohos.permission.INTERNET

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

**参数:**

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

**返回值:**

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

A
anyueling 已提交
776
**示例:**
A
anyueling 已提交
777

A
anyueling 已提交
778 779
  ```js
  let downloadTask;
A
anyueling 已提交
780
  request.download({ url: 'https://xxxx/xxxx.hap' }).then((data) => {
A
anyueling 已提交
781 782 783 784 785 786 787
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


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

A
anyueling 已提交
790
download(config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void
A
anyueling 已提交
791 792 793

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

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

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

A
anyueling 已提交
798 799 800 801 802 803
**需要权限**:ohos.permission.INTERNET

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

**参数:**

804
  | 参数名 | 类型 | 必填 | 说明 |
A
anyueling 已提交
805 806
  | -------- | -------- | -------- | -------- |
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
807
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
A
anyueling 已提交
808 809

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

A
anyueling 已提交
811 812
  ```js
  let downloadTask;
A
anyueling 已提交
813
  request.download({ url: 'https://xxxx/xxxxx.hap', 
A
anyueling 已提交
814 815 816 817 818 819 820 821
  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
      if (err) {
          console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
          return;
      }
      downloadTask = data;
  });
  ```
822

Z
zengyawen 已提交
823 824
## DownloadTask

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


### on('progress')

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

832
订阅下载任务进度监听,同步方法,使用callback形式返回结果。
Z
zengyawen 已提交
833 834 835 836 837

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

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

838 839 840
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
841
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
842
  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
843
  | callback | function | 是 | 下载任务进度的回调函数。 |
Z
zengyawen 已提交
844 845 846

  回调函数的参数:

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

852
**示例:**
A
anyueling 已提交
853

854
  ```js
C
cy7717 已提交
855
  let progresCallback = (receivedSize, totalSize) => {
Z
zengyawen 已提交
856
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
857
  };
C
cy7717 已提交
858
  downloadTask.on('progress', progresCallback);
Z
zengyawen 已提交
859 860 861 862 863
  ```


### off('progress')

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

866
取消订阅下载任务进度监听,同步方法。
Z
zengyawen 已提交
867 868 869 870 871

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

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

872 873
**参数:**

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

879
**示例:**
A
anyueling 已提交
880

881
  ```js
C
cy7717 已提交
882 883 884 885
  let progresCallback = (receivedSize, totalSize) => {
      console.info('Download delete progress notification.' + 'receivedSize:' + receivedSize + 'totalSize:' + totalSize);
  };
  downloadTask.off('progress', progresCallback);
Z
zengyawen 已提交
886 887 888
  ```


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

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

893
订阅下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
894 895 896 897 898

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

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

899 900 901
**参数:**

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

906
**示例:**
A
anyueling 已提交
907

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

  let pauseCallback = () => {
      console.info('Download task pause.');
  };
  downloadTask.on('pause', pauseCallback);

  let removeCallback = () => {
      console.info('Download task remove.');
  };
  downloadTask.on('remove', removeCallback);
Z
zengyawen 已提交
923 924 925
  ```


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

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

930
取消订阅下载任务相关的监听,同步方法。
Z
zengyawen 已提交
931 932 933 934 935

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

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

936 937 938
**参数:**

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

943
**示例:**
A
anyueling 已提交
944

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

  let pauseCallback = () => {
      console.info('Download delete pause notification.');
  };
  downloadTask.off('pause', pauseCallback);

  let removeCallback = () => {
      console.info('Download delete remove notification.');
  };
  downloadTask.off('remove', removeCallback);
Z
zengyawen 已提交
960 961 962 963 964
  ```


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

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

967
订阅下载任务失败监听,同步方法,使用callback形式返回结果。
Z
zengyawen 已提交
968 969 970 971 972

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

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

973 974 975
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
976
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
977 978
  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 是 | 下载失败的回调函数。 |
Z
zengyawen 已提交
979 980 981

  回调函数的参数:

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

986
**示例:**
A
anyueling 已提交
987

988 989
  ```js
  let failCallback = (err) => {
990
      console.info('Download task failed. Cause:' + err);
991 992
  };
  downloadTask.on('fail', failCallback);
Z
zengyawen 已提交
993 994 995 996 997
  ```


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

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

1000
取消订阅下载任务失败监听,同步方法。
Z
zengyawen 已提交
1001 1002 1003 1004 1005

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

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

1006 1007 1008
**参数:**

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

1013
**示例:**
A
anyueling 已提交
1014

1015
  ```js
C
cy7717 已提交
1016
  let failCallback = (err) => {
C
mod  
cy7717 已提交
1017
      console.info(`Download delete fail notification. err: ${err.message}`);
C
cy7717 已提交
1018
  };
1019
  downloadTask.off('fail', failCallback);
Z
zengyawen 已提交
1020 1021
  ```

A
anyueling 已提交
1022
### delete<sup>9+</sup>
Z
zengyawen 已提交
1023

A
anyueling 已提交
1024
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1025 1026 1027 1028 1029 1030 1031

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

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

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

1032 1033 1034
**返回值:**

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

1038
**示例:**
A
anyueling 已提交
1039

1040
  ```js
A
anyueling 已提交
1041
  downloadTask.delete().then((result) => {
Z
zengyawen 已提交
1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052
      if (result) {
          console.info('Download task removed.');
      } else {
          console.error('Failed to remove the download task.');
      }
  }).catch ((err) => {
      console.error('Failed to remove the download task.');
  });
  ```


A
anyueling 已提交
1053
### delete<sup>9+</sup>
Z
zengyawen 已提交
1054

A
anyueling 已提交
1055
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
1056 1057 1058 1059 1060 1061 1062

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

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

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

1063 1064
**参数:**

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

1069
**示例:**
A
anyueling 已提交
1070

1071
  ```js
A
anyueling 已提交
1072
  downloadTask.delete((err, result)=>{
Z
zengyawen 已提交
1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085
      if(err) {
          console.error('Failed to remove the download task.');
          return;
      } 
      if (result) {
          console.info('Download task removed.');
      } else {
          console.error('Failed to remove the download task.');
      } 
  });
  ```


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

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

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

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

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

1096 1097 1098
**返回值:**

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

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

1104
  ```js
A
anyueling 已提交
1105
  downloadTask.getTaskInfo().then((downloadInfo) => {    
Z
zengyawen 已提交
1106
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
Z
zengyawen 已提交
1107 1108 1109 1110 1111 1112
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


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

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

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

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

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

1123 1124
**参数:**

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

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

1131
  ```js
A
anyueling 已提交
1132
  downloadTask.getTaskInfo((err, downloadInfo)=>{
Z
zengyawen 已提交
1133 1134 1135 1136 1137 1138 1139 1140 1141
      if(err) {
          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
      } else {
          console.info('download query success. data:'+ JSON.stringify(downloadInfo));
      }
  });
  ```


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

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

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

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

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

1152 1153 1154
**返回值:**

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

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

1160
  ```js
A
anyueling 已提交
1161
  downloadTask.getTaskMimeType().then((data) => {    
Z
zengyawen 已提交
1162 1163 1164 1165 1166 1167 1168
      console.info('Download task queried. Data:' + JSON.stringify(data));
  }).catch((err) => {
      console.error('Failed to query the download MimeType. Cause:' + JSON.stringify(err))
  });
  ```


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

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

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

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

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

1179 1180
**参数:**

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

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

1187
  ```js
A
anyueling 已提交
1188
  downloadTask.getTaskMimeType((err, data)=>{
Z
zengyawen 已提交
1189 1190 1191 1192 1193 1194 1195 1196 1197
      if(err) {
          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
      } else {
          console.info('Download task queried. data:' + JSON.stringify(data));
      }
  });
  ```


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

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

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

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

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

1208 1209 1210
**返回值:**

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

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

1216
  ```js
A
anyueling 已提交
1217
  downloadTask.suspend().then((result) => {    
Z
zengyawen 已提交
1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228
      if (result) {
           console.info('Download task paused. ');
      } else {
          console.error('Failed to pause the download task. Cause:' + JSON.stringify(result));
      }
  }).catch((err) => {
      console.error('Failed to pause the download task. Cause:' + JSON.stringify(err));
  });
  ```


A
anyueling 已提交
1229
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1230

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

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

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

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

1239 1240
**参数:**

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

1245
**示例:**
A
anyueling 已提交
1246

1247
  ```js
A
anyueling 已提交
1248
  downloadTask.suspend((err, result)=>{
Z
zengyawen 已提交
1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261
      if(err) {
          console.error('Failed to pause the download task. Cause:' + JSON.stringify(err));
          return;
      }
      if (result) {
           console.info('Download task paused. ');
      } else {
          console.error('Failed to pause the download task. Cause:' + JSON.stringify(result));
      }
  });
  ```


A
anyueling 已提交
1262
### restore<sup>9+</sup>
Z
zengyawen 已提交
1263

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

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

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

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

1272
**返回值:**
1273 1274

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

1278
**示例:**
A
anyueling 已提交
1279

1280
  ```js
A
anyueling 已提交
1281
  downloadTask.restore().then((result) => {
Z
zengyawen 已提交
1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293
      if (result) {
          console.info('Download task resumed.')
      } else {
          console.error('Failed to resume the download task. ');
      }
      console.info('Download task resumed.')
  }).catch((err) => {
      console.error('Failed to resume the download task. Cause:' + err);
  });
  ```


A
anyueling 已提交
1294
### restore<sup>9+</sup>
Z
zengyawen 已提交
1295

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

Z
zengyawen 已提交
1298 1299 1300 1301 1302 1303
重新启动暂停的下载任务,异步方法,使用callback形式返回结果。

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

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

1304 1305
**参数:**

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

1310
**示例:**
A
anyueling 已提交
1311

1312
  ```js
A
anyueling 已提交
1313
  downloadTask.restore((err, result)=>{
Z
zengyawen 已提交
1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326
      if (err) {
          console.error('Failed to resume the download task. Cause:' + err);
          return;
      } 
      if (result) {
          console.info('Download task resumed.');
      } else {
          console.error('Failed to resume the download task.');
      }
  });
  ```


1327

A
anyueling 已提交
1328 1329 1330
### remove<sup>(deprecated)</sup>

remove(): Promise&lt;boolean&gt;
1331 1332 1333

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

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

1336 1337 1338 1339 1340 1341
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1342
  | 类型 | 说明 |
1343
  | -------- | -------- |
A
anyueling 已提交
1344
  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
1345 1346 1347 1348

**示例:**

  ```js
A
anyueling 已提交
1349
  downloadTask.remove().then((result) => {
1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360
      if (result) {
          console.info('Download task removed.');
      } else {
          console.error('Failed to remove the download task.');
      }
  }).catch ((err) => {
      console.error('Failed to remove the download task.');
  });
  ```


A
anyueling 已提交
1361
### remove<sup>(deprecated)</sup>
1362

A
anyueling 已提交
1363
remove(callback: AsyncCallback&lt;boolean&gt;): void
1364 1365 1366

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

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

1369 1370 1371 1372 1373 1374
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1375
  | 参数名 | 类型 | 必填 | 说明 |
1376
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1377
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
1378 1379 1380 1381

**示例:**

  ```js
A
anyueling 已提交
1382
  downloadTask.remove((err, result)=>{
1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395
      if(err) {
          console.error('Failed to remove the download task.');
          return;
      } 
      if (result) {
          console.info('Download task removed.');
      } else {
          console.error('Failed to remove the download task.');
      } 
  });
  ```


A
anyueling 已提交
1396
### query<sup>(deprecated)</sup>
1397

A
anyueling 已提交
1398
query(): Promise&lt;DownloadInfo&gt;
1399 1400 1401

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

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

1404 1405 1406 1407
**需要权限**:ohos.permission.INTERNET

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

1408 1409
**返回值:**

A
anyueling 已提交
1410 1411 1412
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
1413 1414 1415 1416

**示例:**

  ```js
A
anyueling 已提交
1417
  downloadTask.query().then((downloadInfo) => {    
1418 1419 1420 1421 1422 1423 1424
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


A
anyueling 已提交
1425
### query<sup>(deprecated)</sup>
1426

A
anyueling 已提交
1427
query(callback: AsyncCallback&lt;DownloadInfo&gt;): void
1428 1429 1430

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

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

1433 1434 1435 1436 1437 1438
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1439
  | 参数名 | 类型 | 必填 | 说明 |
1440
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1441
  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
1442 1443 1444 1445

**示例:**

  ```js
A
anyueling 已提交
1446
  downloadTask.query((err, downloadInfo)=>{
1447 1448 1449 1450 1451 1452 1453 1454 1455
      if(err) {
          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
      } else {
          console.info('download query success. data:'+ JSON.stringify(downloadInfo));
      }
  });
  ```


A
anyueling 已提交
1456
### queryMimeType<sup>(deprecated)</sup>
1457

A
anyueling 已提交
1458
queryMimeType(): Promise&lt;string&gt;
1459 1460 1461

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

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

1464 1465 1466 1467 1468 1469
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1470
  | 类型 | 说明 |
1471
  | -------- | -------- |
A
anyueling 已提交
1472
  | Promise&lt;string&gt; | 查询下载任务的MimeType。 |
1473 1474 1475 1476

**示例:**

  ```js
A
anyueling 已提交
1477
  downloadTask.queryMimeType().then((data) => {    
1478 1479 1480 1481 1482 1483 1484
      console.info('Download task queried. Data:' + JSON.stringify(data));
  }).catch((err) => {
      console.error('Failed to query the download MimeType. Cause:' + JSON.stringify(err))
  });
  ```


A
anyueling 已提交
1485
### queryMimeType<sup>(deprecated)</sup>
1486

A
anyueling 已提交
1487
queryMimeType(callback: AsyncCallback&lt;string&gt;): void;
1488 1489 1490

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

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

1493 1494 1495 1496 1497 1498
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1499
  | 参数名 | 类型 | 必填 | 说明 |
1500
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1501
  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的MimeType的回调函数。 |
1502 1503 1504 1505

**示例:**

  ```js
A
anyueling 已提交
1506
  downloadTask.queryMimeType((err, data)=>{
1507 1508 1509 1510 1511 1512 1513 1514 1515
      if(err) {
          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
      } else {
          console.info('Download task queried. data:' + JSON.stringify(data));
      }
  });
  ```


A
anyueling 已提交
1516
### pause<sup>(deprecated)</sup>
1517

A
anyueling 已提交
1518
pause(): Promise&lt;void&gt;
1519 1520 1521

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

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

1524 1525 1526 1527 1528 1529
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1530
  | 类型 | 说明 |
1531
  | -------- | -------- |
A
anyueling 已提交
1532
  | Promise&lt;void&gt; | 暂停下载任务是否成功。 |
1533 1534 1535 1536

**示例:**

  ```js
A
anyueling 已提交
1537
  downloadTask.pause().then((result) => {    
1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548
      if (result) {
           console.info('Download task paused. ');
      } else {
          console.error('Failed to pause the download task. Cause:' + JSON.stringify(result));
      }
  }).catch((err) => {
      console.error('Failed to pause the download task. Cause:' + JSON.stringify(err));
  });
  ```


A
anyueling 已提交
1549
### pause<sup>(deprecated)</sup>
1550

A
anyueling 已提交
1551 1552 1553
pause(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9-1)替代。
1554 1555 1556 1557 1558 1559 1560 1561 1562

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

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

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

**参数:**

A
anyueling 已提交
1563
  | 参数名 | 类型 | 必填 | 说明 |
1564
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1565
  | callback | AsyncCallback&lt;void&gt; | 是 | 暂停下载任务的回调函数。 |
1566 1567 1568 1569

**示例:**

  ```js
A
anyueling 已提交
1570
  downloadTask.pause((err, result)=>{
1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583
      if(err) {
          console.error('Failed to pause the download task. Cause:' + JSON.stringify(err));
          return;
      }
      if (result) {
           console.info('Download task paused. ');
      } else {
          console.error('Failed to pause the download task. Cause:' + JSON.stringify(result));
      }
  });
  ```


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

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

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

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

1592 1593 1594 1595
**需要权限**:ohos.permission.INTERNET

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

1596
**返回值:**
1597

A
anyueling 已提交
1598
  | 类型 | 说明 |
1599
  | -------- | -------- |
A
anyueling 已提交
1600
  | Promise&lt;void&gt; | 重新启动暂停的下载任务是否成功。 |
1601 1602 1603 1604

**示例:**

  ```js
A
anyueling 已提交
1605
  downloadTask.resume().then((result) => {
1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617
      if (result) {
          console.info('Download task resumed.')
      } else {
          console.error('Failed to resume the download task. ');
      }
      console.info('Download task resumed.')
  }).catch((err) => {
      console.error('Failed to resume the download task. Cause:' + err);
  });
  ```


A
anyueling 已提交
1618
### resume<sup>(deprecated)</sup>
1619

A
anyueling 已提交
1620 1621 1622
resume(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9-1)替代。
1623 1624 1625 1626 1627 1628 1629 1630 1631

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

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

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

**参数:**

A
anyueling 已提交
1632
  | 参数名 | 类型 | 必填 | 说明 |
1633
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1634
  | callback | AsyncCallback&lt;void&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
1635 1636 1637 1638

**示例:**

  ```js
A
anyueling 已提交
1639
  downloadTask.resume((err, result)=>{
1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652
      if (err) {
          console.error('Failed to resume the download task. Cause:' + err);
          return;
      } 
      if (result) {
          console.info('Download task resumed.');
      } else {
          console.error('Failed to resume the download task.');
      }
  });
  ```


Z
zengyawen 已提交
1653
## DownloadConfig
1654
下载任务的配置信息。
Z
zengyawen 已提交
1655

A
anyueling 已提交
1656 1657
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1658 1659 1660 1661 1662
**系统能力**: SystemCapability.MiscServices.Download

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


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

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

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

1680
| 名称 | 类型 |必填 |  说明 |
1681
| -------- | -------- | -------- | -------- |
1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692
| 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)。 |
1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 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 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 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 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 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 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 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 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 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 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 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 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 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 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 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 2596 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 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 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 2678 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 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 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

## 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
  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.');
  };
  request.agent.create(globalThis.abilityContext, conf).then((task)=> {
    task.on('progress', createOnCallback);
    task.on('completed', createOnCallback);
    task.on('failed', createOnCallback);
    console.info(`create a upload task successfully. result: ${task.tid}`);
  }).catch((err) => {
    console.error(`Failed to create a upload task, because: ${JSON.stringify(err)}`);
  });
  ```


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

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

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

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

**参数:**

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

**错误码:**

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

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

**示例:**

  ```js
  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.');
  };
  request.agent.create(globalThis.abilityContext, conf).then((task)=> {
    task.on('progress', createOffCallback);
    task.on('completed', createOffCallback);
    task.on('failed', createOffCallback);
    task.off('progress', createOffCallback);
    task.off('completed', createOffCallback);
    task.off('failed', createOffCallback);
    console.info(`create a upload task successfully. result: ${task.tid}`);
  }).catch((err) => {
    console.error(`Failed to create a upload task, because: ${JSON.stringify(err)}`);
  });
  ```


### 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
  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"
  };
  request.agent.create(globalThis.abilityContext, conf).then((task) => {
    task.start((err) => {
      if (err) {
        console.error(`Failed to start the download task, because: ${JSON.stringify(err)}`);
        return;
      }
      console.info(`start a download task successfully. `);
    })
    console.info(`create a download task successfully. result: ${task.tid}`);
  }).catch((err) => {
    console.error(`Failed to create a download task, because: ${JSON.stringify(err)}`);
  });
  ```


### 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
  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"
  };
  request.agent.create(globalThis.abilityContext, conf).then((task) => {
    task.start().then(() => {
      console.info(`start a download task successfully. `);
    }).catch((err) => {
      console.error(`Failed to start the download task, because: ${JSON.stringify(err)}`);
    });
    console.info(`create a download task successfully. result: ${task.tid}`);
  }).catch((err) => {
    console.error(`Failed to create a download task, because: ${JSON.stringify(err)}`);
  });
  ```


### 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
  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"
  };
  request.agent.create(globalThis.abilityContext, conf).then((task) => {
    task.pause((err) => {
      if (err) {
        console.error(`Failed to pause the download task, because: ${JSON.stringify(err)}`);
        return;
      }
      console.info(`pause a download task successfully. `);
    })
    console.info(`create a download task successfully. result: ${task.tid}`);
  }).catch((err) => {
    console.error(`Failed to create a download task, because: ${JSON.stringify(err)}`);
  });
  ```


### 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
  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"
  };
  request.agent.create(globalThis.abilityContext, conf).then((task) => {
    task.pause().then(() => {
      console.info(`pause a upload task successfully. `);
    }).catch((err) => {
      console.error(`Failed to pause the upload task, because: ${JSON.stringify(err)}`);
    });
    console.info(`create a upload task successfully. result: ${task.tid}`);
  }).catch((err) => {
    console.error(`Failed to create a upload task, because: ${JSON.stringify(err)}`);
  });
  ```


### 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
  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"
  };
  request.agent.create(globalThis.abilityContext, conf).then((task) => {
    task.resume().then(() => {
      console.info(`resume a download task successfully. `);
    }).catch((err) => {
      console.error(`Failed to resume the download task, because: ${JSON.stringify(err)}`);
    });
    console.info(`create a download task successfully. result: ${task.tid}`);
  }).catch((err) => {
    console.error(`Failed to create a download task, because: ${JSON.stringify(err)}`);
  });
  ```


### 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
  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"
  };
  request.agent.create(globalThis.abilityContext, conf).then((task) => {
    task.resume((err) => {
      if (err) {
        console.error(`Failed to resume the download task, because: ${JSON.stringify(err)}`);
        return;
      }
      console.info(`resume a download task successfully. `);
    })
    console.info(`create a download task successfully. result: ${task.tid}`);
  }).catch((err) => {
    console.error(`Failed to create a download task, because: ${JSON.stringify(err)}`);
  });
  ```


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

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

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

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

**参数:**

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

**错误码:**

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

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

**示例:**

  ```js
  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"
  };
  request.agent.create(globalThis.abilityContext, conf).then((task) => {
    task.stop().then(() => {
      console.info(`stop a download task successfully. `);
    }).catch((err) => {
      console.error(`Failed to stop the download task, because: ${JSON.stringify(err)}`);
    });
    console.info(`create a download task successfully. result: ${task.tid}`);
  }).catch((err) => {
    console.error(`Failed to create a download task, because: ${JSON.stringify(err)}`);
  });
  ```


### 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
  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"
  };
  request.agent.create(globalThis.abilityContext, conf).then((task) => {
    task.stop((err) => {
      if (err) {
        console.error(`Failed to stop the download task, because: ${JSON.stringify(err)}`);
        return;
      }
      console.info(`stop a download task successfully. `);
    })
    console.info(`create a download task successfully. result: ${task.tid}`);
  }).catch((err) => {
    console.error(`Failed to create a download task, because: ${JSON.stringify(err)}`);
  });
  ```

## 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
  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"
  };
  request.agent.create(globalThis.abilityContext, conf, (err, task) => {
    if (err) {
      console.error(`Failed to create a upload task, because: ${err.message}`);
      return;
    }
    console.info(`create a upload task successfully. result: ${task.conf}`);
  });
  ```


## 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
  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"
  };
  request.agent.create(globalThis.abilityContext, conf).then((task)=> {
    console.info(`create a upload task successfully. result: ${task.conf}`);
  }).catch((err) => {
    console.error(`Failed to create a upload task, because: ${err.message}`);
  });
  ```


## 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) {
      console.error(`Failed to remove a upload task, because: ${JSON.stringify(err)}`);
      return;
    }
    console.info(`remove a upload task successfully.`);
  });
  ```


## 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(() => {
    console.info(`remove a upload task successfully. `);
  }).catch((err) => {
    console.error(`Failed to remove a upload task, because: ${JSON.stringify(err)}`);
  });
  ```

2747
<!--no_check-->