js-apis-request.md 35.8 KB
Newer Older
Z
zengyawen 已提交
1
# 上传下载
A
修改  
anyueling 已提交
2

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

Z
zengyawen 已提交
5 6 7 8 9 10 11
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块


Z
zengyawen 已提交
12
```js
Z
zengyawen 已提交
13 14 15 16 17
import request from '@ohos.request';
```


## 限制与约束
A
anyueling 已提交
18

A
anyueling 已提交
19
在开发FA模型下的应用程序时, 默认支持https,如果要支持http,需要在config.json里增加network标签,属性标识 "cleartextTraffic": true。即:
A
anyueling 已提交
20

A
anyueling 已提交
21
```js
22
var config = {
Z
zengyawen 已提交
23 24 25
  "deviceConfig": {
    "default": {
      "network": {
A
anyueling 已提交
26
        "cleartextTraffic": true
Z
zengyawen 已提交
27
      }
28
      //...
Z
zengyawen 已提交
29
    }
Z
zengyawen 已提交
30
  }
31
}
Z
zengyawen 已提交
32
```
A
anyueling 已提交
33

A
anyueling 已提交
34
在开发stage模型下的应用程序时,不涉及属性标识 "cleartextTraffic"。
A
anyueling 已提交
35

Z
zengyawen 已提交
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67


## 常量

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

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

| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| NETWORK_MOBILE | number | 是 | 否 | 使用蜂窝网络时允许下载的位标志。 |
| NETWORK_WIFI | number | 是 | 否 | 使用WLAN时允许下载的位标志。 |
| ERROR_CANNOT_RESUME<sup>7+</sup> | number | 是 | 否 | 某些临时错误导致的恢复下载失败。 |
| ERROR_DEVICE_NOT_FOUND<sup>7+</sup> | number | 是 | 否 | 找不到SD卡等存储设备。 |
| ERROR_FILE_ALREADY_EXISTS<sup>7+</sup> | number | 是 | 否 | 要下载的文件已存在,下载会话不能覆盖现有文件。 |
| ERROR_FILE_ERROR<sup>7+</sup> | number | 是 | 否 | 文件操作失败。 |
| ERROR_HTTP_DATA_ERROR<sup>7+</sup> | number | 是 | 否 | HTTP传输失败。 |
| ERROR_INSUFFICIENT_SPACE<sup>7+</sup> | number | 是 | 否 | 存储空间不足。 |
| ERROR_TOO_MANY_REDIRECTS<sup>7+</sup> | number | 是 | 否 | 网络重定向过多导致的错误。 |
| ERROR_UNHANDLED_HTTP_CODE<sup>7+</sup> | number | 是 | 否 | 无法识别的HTTP代码。 |
| ERROR_UNKNOWN<sup>7+</sup> | number | 是 | 否 | 未知错误。 |
| PAUSED_QUEUED_FOR_WIFI<sup>7+</sup> | number | 是 | 否 | 下载被暂停并等待WLAN连接,因为文件大小超过了使用蜂窝网络的会话允许的最大值。 |
| PAUSED_UNKNOWN<sup>7+</sup> | number | 是 | 否 | 未知原因导致暂停下载。 |
| PAUSED_WAITING_FOR_NETWORK<sup>7+</sup> | number | 是 | 否 | 由于网络问题(例如网络断开)而暂停下载。 |
| PAUSED_WAITING_TO_RETRY<sup>7+</sup> | number | 是 | 否 | 发生网络错误,将重试下载会话。 |
| SESSION_FAILED<sup>7+</sup> | number | 是 | 否 | 下载会话已失败,将不会重试。 |
| SESSION_PAUSED<sup>7+</sup> | number | 是 | 否 | 下载会话已暂停。 |
| SESSION_PENDING<sup>7+</sup> | number | 是 | 否 | 正在调度下载会话。 |
| SESSION_RUNNING<sup>7+</sup> | number | 是 | 否 | 下载会话正在进行中。 |
| SESSION_SUCCESSFUL<sup>7+</sup> | number | 是 | 否 | 下载会话已完成。 |


A
anyueling 已提交
68
## request.upload
Z
zengyawen 已提交
69 70 71 72 73

upload(config: UploadConfig): Promise&lt;UploadTask&gt;

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

A
anyueling 已提交
74 75
此接口仅可在FA模型下使用

Z
zengyawen 已提交
76 77 78 79
**需要权限**:ohos.permission.INTERNET

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

80 81 82
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
83
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
84
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
Z
zengyawen 已提交
85

86 87 88
**返回值:**

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

92
**示例:**
Z
zengyawen 已提交
93
  
94
  ```js
95
  let uploadTask;
A
anyueling 已提交
96 97 98 99 100 101 102 103
  let uploadConfig = {
    url: 'https://patch',
    header: { key1: "value1", key2: "value2" },
    method: "POST",
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
  };
  request.upload(uploadConfig).then((data) => {
Z
zengyawen 已提交
104 105 106 107 108 109 110
      uploadTask = data;
  }).catch((err) => {
      console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
  })
  ```


A
anyueling 已提交
111
## request.upload
Z
zengyawen 已提交
112 113 114 115 116

upload(config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void

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

A
anyueling 已提交
117 118
此接口仅可在FA模型下使用

Z
zengyawen 已提交
119 120 121 122
**需要权限**:ohos.permission.INTERNET

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

123 124 125
**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
Z
zengyawen 已提交
126
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
127 128
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 否 | 回调函数,异步返回UploadTask对象。 |
Z
zengyawen 已提交
129

130
**示例:**
Z
zengyawen 已提交
131
  
132
  ```js
133
  let uploadTask;
A
anyueling 已提交
134 135 136 137 138 139 140 141
  let uploadConfig = {
    url: 'https://patch',
    header: { key1: "value1", key2: "value2" },
    method: "POST",
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
  };
  request.upload(uploadConfig, (err, data) => {
Z
zengyawen 已提交
142 143 144 145 146 147 148
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```
A
anyueling 已提交
149 150
## request.upload<sup>9+</sup>

A
anyueling 已提交
151
upload(context: BaseContext, config: UploadConfig): Promise&lt;UploadTask&gt;
A
anyueling 已提交
152 153 154 155 156 157 158 159 160 161 162

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

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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
163
  | context | BaseContext | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
  

**返回值:**

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

**示例:**
  
  ```js
  let uploadTask;
  let uploadConfig = {
    url: 'https://patch',
    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 已提交
183
  };
A
anyueling 已提交
184 185 186 187
  request.upload(globalThis.abilityContext, uploadConfig).then((data) => {
      uploadTask = data;
  }).catch((err) => {
      console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
A
anyueling 已提交
188
  });
A
anyueling 已提交
189 190 191 192 193
  ```


## request.upload<sup>9+</sup>

A
anyueling 已提交
194
upload(context: BaseContext, config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
A
anyueling 已提交
195 196 197 198 199 200 201 202

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

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

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

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

A
anyueling 已提交
204 205
  | 参数名 | 参数类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
206
  | context | BaseContext | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 否 | 回调函数,异步返回UploadTask对象。 |

**示例:**
  
  ```js
  let uploadTask;
  let uploadConfig = {
    url: 'https://patch',
    header: { key1: "value1", key2: "value2" },
    method: "POST",
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
  };
  request.upload(globalThis.abilityContext, uploadConfig, (err, data) => {
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```
Z
zengyawen 已提交
229 230 231 232 233 234 235 236

## UploadTask

上传任务,使用下列方法前,需要先获取UploadTask对象。


### on('progress')

Z
zengyawen 已提交
237
on(type: 'progress', callback:(uploadedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
238 239 240 241 242 243 244

开启上传任务监听,异步方法,使用callback形式返回结果。

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

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

245 246 247
**参数:**

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

252
  回调函数的参数
Z
zengyawen 已提交
253

254 255 256 257
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| uploadedSize | number | 是 | 当前已上传文件大小,单位为KB。 |
| totalSize | number | 是 | 上传文件的总大小,单位为KB。 |
Z
zengyawen 已提交
258

259
**示例:**
Z
zengyawen 已提交
260
  
261
  ```js
Z
zengyawen 已提交
262
  uploadTask.on('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
263 264
      console.info("upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize);
  }
Z
zengyawen 已提交
265
  );
Z
zengyawen 已提交
266 267 268 269 270
  ```


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

Z
zengyawen 已提交
271
on(type: 'headerReceive', callback:  (header: object) =&gt; void): void
Z
zengyawen 已提交
272 273 274 275 276 277 278

开启上传任务监听,异步方法,使用callback形式返回结果。

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

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

279 280 281
**参数:**

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

  回调函数的参数:

288 289 290
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
291

292
**示例:**
Z
zengyawen 已提交
293
  
294
  ```js
Z
zengyawen 已提交
295
  uploadTask.on('headerReceive', function callback(headers){   
Z
zengyawen 已提交
296 297
      console.info("upOnHeader headers:" + JSON.stringify(headers));
  }
Z
zengyawen 已提交
298
  );
Z
zengyawen 已提交
299 300 301
  ```


A
anyueling 已提交
302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343
### on('complete' | 'fail')

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

开启上传任务监听,异步方法,使用callback形式返回结果。

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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 订阅的事件类型,取值为'complete',表示上传任务完成;取值为'fail',表示上传任务失败。|
  | callback | function | 是 | 上传任务完成或失败的回调函数。 |

  回调函数的参数

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| &lt;Array&lt;TaskState&gt;&gt; | array | 是 | 上传任务返回结果 |

**示例:**
  
  ```js
  uploadTask.on('complete', function callback(TaskStates) {
    for (let i = 0; i < TaskState.length; i++ ) {
      console.info("upOnComplete taskState:" + JSON.stringify(TaskStates[i]));
    }
  }
  );

  uploadTask.on('fail', function callback(TaskStates) {
    for (let i = 0; i < TaskState.length; i++ ) {
      console.info("upOnFail taskState:" + JSON.stringify(TaskStates[i]));
    }
  }
  );
  ```


Z
zengyawen 已提交
344 345
### off('progress')

Z
zengyawen 已提交
346
off(type:  'progress',  callback?: (uploadedSize: number, totalSize: number) =&gt;  void): void
Z
zengyawen 已提交
347 348 349 350 351 352 353

关闭上传任务监听,异步方法,使用callback形式返回结果。

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

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

354 355 356
**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
Z
zengyawen 已提交
357
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
358 359
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(上传的进度信息)。 |
  | callback | function | 否 | 上传任务的回调函数。 |
Z
zengyawen 已提交
360 361 362

  回调函数的参数:

363 364 365 366
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| uploadedSize | number | 是 | 当前已上传文件的大小,单位为KB。 |
| totalSize | number | 是 | 上传文件的总大小,单位为KB。 |
Z
zengyawen 已提交
367

368
**示例:**
Z
zengyawen 已提交
369
  
370
  ```js
Z
zengyawen 已提交
371
  uploadTask.off('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
372 373
      console.info('uploadedSize: ' + uploadedSize, 'totalSize: ' + totalSize);
  }
Z
zengyawen 已提交
374
  );
Z
zengyawen 已提交
375 376 377 378 379
  ```


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

Z
zengyawen 已提交
380
off(type: 'headerReceive', callback?: (header: object) =&gt; void): void
Z
zengyawen 已提交
381 382 383 384 385 386 387

关闭上传任务监听,异步方法,使用callback形式返回结果。

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

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

388 389 390
**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
Z
zengyawen 已提交
391
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
392
  | type | string | 是 | 取消订阅的事件类型,取值为'headerReceive'(接收响应头)。 |
Z
zengyawen 已提交
393
  | callback | function | 否 | HTTP&nbsp;Response&nbsp;Header事件的回调函数。 |
Z
zengyawen 已提交
394 395 396

  回调函数的参数:

397 398 399
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
400

401
**示例:**
Z
zengyawen 已提交
402
  
403
  ```js
Z
zengyawen 已提交
404
  uploadTask.off('headerReceive', function callback(headers) {
Z
zengyawen 已提交
405 406
      console.info("upOnHeader headers:" + JSON.stringify(headers));
  }
Z
zengyawen 已提交
407
  );
Z
zengyawen 已提交
408 409
  ```

A
anyueling 已提交
410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433
### off('complete' | 'fail')

 off(type:'complete' | 'fail'): void;

关闭上传任务监听。

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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 订阅的事件类型,取值为'complete',表示上传任务完成;取值为'fail',表示上传任务失败。|

**示例:**
  
  ```js
  uploadTask.off('complete');

  uploadTask.off('fail');
  ```

Z
zengyawen 已提交
434 435 436 437 438 439 440 441 442 443 444

### remove

remove(): Promise&lt;boolean&gt;

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

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

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

445 446 447
**返回值:**

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

451
**示例:**
Z
zengyawen 已提交
452
  
453
  ```js
Z
zengyawen 已提交
454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475
  uploadTask.remove().then((result) => {
      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));
  });
  ```


### remove

remove(callback: AsyncCallback&lt;boolean&gt;): void

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

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

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

476 477 478
**参数:**

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

482
**示例:**
Z
zengyawen 已提交
483
  
484
  ```js
Z
zengyawen 已提交
485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500
  uploadTask.remove((err, result) => {
      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.');
      }
  });
  ```


## UploadConfig

A
anyueling 已提交
501 502
**需要权限**:ohos.permission.INTERNET

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

Z
zengyawen 已提交
505
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
506
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
507
| url | string | 是 | 资源地址。 |
508 509
| header | object | 是 | 添加要包含在上载请求中的HTTP或HTTPS标志头。 |
| method | string | 是 | 请求方法:POST、PUT。缺省为POST。 |
Z
zengyawen 已提交
510
| files | Array&lt;[File](#file)&gt; | 是 | 要上传的文件列表。请使用&nbsp;multipart/form-data提交。 |
511
| data | Array&lt;[RequestData](#requestdata)&gt; | 是 | 请求的表单数据。 |
Z
zengyawen 已提交
512

A
anyueling 已提交
513 514 515 516 517 518 519 520 521 522 523
## TaskState

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

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

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

## File

A
anyueling 已提交
527 528 529
**需要权限**:ohos.permission.INTERNET

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

Z
zengyawen 已提交
531
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
532
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
533 534
| filename | string | 否 | multipart提交时,请求头中的文件名。 |
| name | string | 否 | multipart提交时,表单项目的名称,缺省为file。 |
Z
zengyawen 已提交
535
| uri | string | 是 | 文件的本地存储路径。<br/>支持“dataability”和“internal”两种协议类型,但“internal”仅支持临时目录,示例:<br/>dataability:///com.domainname.dataability.persondata/person/10/file.txt<br/>internal://cache/path/to/file.txt |
Z
zengyawen 已提交
536
| type | string | 否 | 文件的内容类型,默认根据文件名或路径的后缀获取。 |
Z
zengyawen 已提交
537 538 539 540


## RequestData

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

A
anyueling 已提交
543
**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download
Z
zengyawen 已提交
544
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
545
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
546 547
| name | string | 是 | 表示表单元素的名称。 |
| value | string | 是 | 表示表单元素的值。 |
Z
zengyawen 已提交
548 549


A
anyueling 已提交
550
## request.download
Z
zengyawen 已提交
551 552 553 554 555

download(config: DownloadConfig): Promise&lt;DownloadTask&gt;

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

A
anyueling 已提交
556 557
此接口仅可在FA模型下使用

Z
zengyawen 已提交
558 559 560 561
**需要权限**:ohos.permission.INTERNET

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

562 563 564
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
565
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
566
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
Z
zengyawen 已提交
567

568 569 570
**返回值:**

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

574
**示例:**
Z
zengyawen 已提交
575
  
576
  ```js
577
  let downloadTask;
Z
zengyawen 已提交
578 579 580 581 582 583 584 585
  request.download({ url: 'https://xxxx/xxxx.hap' }).then((data) => {
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


A
anyueling 已提交
586
## request.download
Z
zengyawen 已提交
587 588 589 590 591

download(config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void

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

A
anyueling 已提交
592 593
此接口仅可在FA模型下使用

Z
zengyawen 已提交
594 595 596 597
**需要权限**:ohos.permission.INTERNET

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

598 599 600
**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
Z
zengyawen 已提交
601
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
602 603
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 否 | 下载接口的回调函数。 |
Z
zengyawen 已提交
604

605
**示例:**
Z
zengyawen 已提交
606
  
607
  ```js
608
  let downloadTask;
Z
zengyawen 已提交
609 610 611 612 613 614 615 616 617 618
  request.download({ 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;
  });
  ```

A
anyueling 已提交
619 620
## request.download<sup>9+</sup>

A
anyueling 已提交
621
download(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
A
anyueling 已提交
622 623 624 625 626 627 628 629 630 631 632

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

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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
633
  | context | BaseContext | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
634 635 636 637 638 639 640
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |

**返回值:**

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

A
anyueling 已提交
642 643 644 645 646 647 648 649 650 651 652 653 654 655
**示例:**
  
  ```js
  let downloadTask;
  request.download(globalThis.abilityContext, { url: 'https://xxxx/xxxx.hap' }).then((data) => {
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


## request.download<sup>9+</sup>

A
anyueling 已提交
656
download(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
A
anyueling 已提交
657 658 659 660 661 662 663 664 665 666 667

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

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

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

**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
668
  | context | BaseContext | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 否 | 下载接口的回调函数。 |

**示例:**
  
  ```js
  let downloadTask;
  request.download(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;
  });
  ```
Z
zengyawen 已提交
685 686 687 688 689 690 691
## DownloadTask

下载任务。


### on('progress')

Z
zengyawen 已提交
692
on(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
693 694 695 696 697 698 699

开启下载任务监听,异步方法,使用callback形式返回结果。

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

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

700 701 702
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
703
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
704 705
  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 是 | 下载的回调函数。 |
Z
zengyawen 已提交
706 707 708

  回调函数的参数:

709 710 711 712
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| receivedSize | number | 是 | 当前下载的进度,单位为KB。 |
| totalSize | number | 是 | 下载文件的总大小,单位为KB。 |
Z
zengyawen 已提交
713

714
**示例:**
Z
zengyawen 已提交
715
  
716
  ```js
717
  downloadTask.on('progress', function download_callback(receivedSize, totalSize) {
Z
zengyawen 已提交
718 719
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
720
  );
Z
zengyawen 已提交
721 722 723 724 725
  ```


### off('progress')

Z
zengyawen 已提交
726
off(type: 'progress', callback?: (receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
727 728 729 730 731 732 733

关闭下载任务监听,异步方法,使用callback形式返回结果。

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

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

734 735 736
**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
Z
zengyawen 已提交
737
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
738 739
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 否 | 下载任务的回调函数。 |
Z
zengyawen 已提交
740 741 742

  回调函数的参数:

743 744 745 746
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| receivedSize | number | 是 | 当前下载的进度。 |
| totalSize | number | 是 | 下载文件的总大小。 |
Z
zengyawen 已提交
747

748
**示例:**
Z
zengyawen 已提交
749
  
750
  ```js
751 752 753
  downloadTask .off('progress', function download_callback(receivedSize, totalSize) {
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
754
  );
Z
zengyawen 已提交
755 756 757
  ```


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

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

Z
zengyawen 已提交
762
开启下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
763 764 765 766 767

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

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

768 769 770
**参数:**

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

775
**示例:**
Z
zengyawen 已提交
776
  
777
  ```js
778 779 780
  downloadTask.on('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
781
  );
Z
zengyawen 已提交
782 783 784
  ```


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

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

Z
zengyawen 已提交
789
取消下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
790 791 792 793 794

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

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

795 796 797
**参数:**

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

802
**示例:**
Z
zengyawen 已提交
803
  
804
  ```js
805 806 807
  downloadTask.off('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
808
  );
Z
zengyawen 已提交
809 810 811 812 813
  ```


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

Z
zengyawen 已提交
814
on(type: 'fail', callback: (err: number) =&gt; void): void
Z
zengyawen 已提交
815 816 817 818 819 820 821

开启下载任务失败监听,异步方法,使用callback形式返回结果。

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

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

822 823 824
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
825
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
826 827
  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 是 | 下载失败的回调函数。 |
Z
zengyawen 已提交
828 829 830

  回调函数的参数:

831 832 833
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| err | number | 是 | 下载失败的错误码,错误原因见[ERROR.*](#常量)。 |
Z
zengyawen 已提交
834

835
**示例:**
Z
zengyawen 已提交
836
  
837
  ```js 
838 839 840
  downloadTask.on('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  }
Z
zengyawen 已提交
841
  );
Z
zengyawen 已提交
842 843 844 845 846
  ```


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

Z
zengyawen 已提交
847
off(type: 'fail', callback?: (err: number) =&gt; void): void
Z
zengyawen 已提交
848 849 850 851 852 853 854

取消下载任务失败监听,异步方法,使用callback形式返回结果。

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

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

855 856 857
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
858
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
859 860
  | type | string | 是 | 取消订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 否 | 取消下载失败的回调函数。 |
Z
zengyawen 已提交
861 862 863

  回调函数的参数

864 865 866
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| err | number | 是 | 下载失败的错误码。错误原因见[ERROR_*](#常量)。 |
Z
zengyawen 已提交
867

868
**示例:**
Z
zengyawen 已提交
869
  
870
  ```js
871 872 873
  downloadTask.off('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  } 
Z
zengyawen 已提交
874
  );
Z
zengyawen 已提交
875 876 877 878 879 880 881 882 883 884 885 886 887
  ```


### remove

remove(): Promise&lt;boolean&gt;

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

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

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

888 889 890
**返回值:**

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

894
**示例:**
Z
zengyawen 已提交
895
  
896
  ```js
Z
zengyawen 已提交
897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918
  downloadTask.remove().then((result) => {
      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.');
  });
  ```


### remove

remove(callback: AsyncCallback&lt;boolean&gt;): void

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

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

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

919 920 921
**参数:**

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

925
**示例:**
Z
zengyawen 已提交
926
  
927
  ```js
Z
zengyawen 已提交
928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951
  downloadTask.remove((err, result)=>{
      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.');
      } 
  });
  ```


### query<sup>7+</sup>

query(): Promise&lt;DownloadInfo&gt;

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

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

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

952
**参数:**
Z
zengyawen 已提交
953
    | 类型 | 说明 |
Z
zengyawen 已提交
954
  | -------- | -------- |
Z
zengyawen 已提交
955
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
Z
zengyawen 已提交
956

957
**示例:**
Z
zengyawen 已提交
958
  
959
  ```js
Z
zengyawen 已提交
960
  downloadTask.query().then((downloadInfo) => {    
Z
zengyawen 已提交
961
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
Z
zengyawen 已提交
962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


### query<sup>7+</sup>

query(callback: AsyncCallback&lt;DownloadInfo&gt;): void

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

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

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

978 979 980
**参数:**

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

984
**示例:**
Z
zengyawen 已提交
985
  
986
  ```js
Z
zengyawen 已提交
987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006
  downloadTask.query((err, downloadInfo)=>{
      if(err) {
          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
      } else {
          console.info('download query success. data:'+ JSON.stringify(downloadInfo));
      }
  });
  ```


### queryMimeType<sup>7+</sup>

queryMimeType(): Promise&lt;string&gt;

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

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

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

1007 1008 1009
**返回值:**

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

1013
**示例:**
Z
zengyawen 已提交
1014
  
1015
  ```js
Z
zengyawen 已提交
1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033
  downloadTask.queryMimeType().then((data) => {    
      console.info('Download task queried. Data:' + JSON.stringify(data));
  }).catch((err) => {
      console.error('Failed to query the download MimeType. Cause:' + JSON.stringify(err))
  });
  ```


### queryMimeType<sup>7+</sup>

queryMimeType(callback: AsyncCallback&lt;string&gt;): void;

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

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

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

1034 1035 1036
**参数:**

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

1040
**示例:**
Z
zengyawen 已提交
1041
  
1042
  ```js
Z
zengyawen 已提交
1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054
  downloadTask.queryMimeType((err, data)=>{
      if(err) {
          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
      } else {
          console.info('Download task queried. data:' + JSON.stringify(data));
      }
  });
  ```


### pause<sup>7+</sup>

Z
zengyawen 已提交
1055
pause(): Promise&lt;void&gt;
Z
zengyawen 已提交
1056 1057 1058 1059 1060 1061 1062

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

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

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

1063 1064 1065
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
1066
  | -------- | -------- |
Z
zengyawen 已提交
1067
  | Promise&lt;void&gt; | 暂停下载任务是否成功。 |
Z
zengyawen 已提交
1068

1069
**示例:**
Z
zengyawen 已提交
1070
  
1071
  ```js
Z
zengyawen 已提交
1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085
  downloadTask.pause().then((result) => {    
      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));
  });
  ```


### pause<sup>7+</sup>

Z
zengyawen 已提交
1086
pause(callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
1087 1088 1089 1090 1091 1092 1093

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

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

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

1094 1095 1096
**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
Z
zengyawen 已提交
1097
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1098
  | callback | AsyncCallback&lt;void&gt; | 是 | 暂停下载任务的回调函数。 |
Z
zengyawen 已提交
1099

1100
**示例:**
Z
zengyawen 已提交
1101
  
1102
  ```js
Z
zengyawen 已提交
1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118
  downloadTask.pause((err, result)=>{
      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));
      }
  });
  ```


### resume<sup>7+</sup>

Z
zengyawen 已提交
1119
resume(): Promise&lt;void&gt;
Z
zengyawen 已提交
1120 1121 1122 1123 1124 1125 1126

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

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

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

1127 1128 1129
**参数:**

  | 类型 | 说明 |
Z
zengyawen 已提交
1130
  | -------- | -------- |
Z
zengyawen 已提交
1131
  | Promise&lt;void&gt; | 重新启动暂停的下载任务是否成功。 |
Z
zengyawen 已提交
1132

1133
**示例:**
Z
zengyawen 已提交
1134
  
1135
  ```js
Z
zengyawen 已提交
1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150
  downloadTask.resume().then((result) => {
      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);
  });
  ```


### resume<sup>7+</sup>

Z
zengyawen 已提交
1151
resume(callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
1152 1153 1154 1155 1156 1157 1158

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

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

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

1159 1160 1161
**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
Z
zengyawen 已提交
1162
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1163
  | callback | AsyncCallback&lt;void&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
Z
zengyawen 已提交
1164

1165
**示例:**
Z
zengyawen 已提交
1166
  
1167
  ```js
Z
zengyawen 已提交
1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183
  downloadTask.resume((err, result)=>{
      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.');
      }
  });
  ```


## DownloadConfig

A
anyueling 已提交
1184 1185
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1186 1187 1188 1189 1190 1191
**系统能力**: SystemCapability.MiscServices.Download

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| url | string | 是 | 资源地址。 |
| header | object | 否 | 添加要包含在下载请求中的HTTP或HTTPS标志头。 |
A
anyueling 已提交
1192 1193
| enableMetered | boolean | 否 | 设置是否允许在按流量计费的连接下下载。<br/>-&nbsp;true:是<br/>-&nbsp;false:否 |
| enableRoaming | boolean | 否 | 设置是否允许在漫游网络中下载。 <br/>-&nbsp;true:是<br/>-&nbsp;false:否|
Z
zengyawen 已提交
1194
| description | string | 否 | 设置下载会话的描述。 |
1195
| filePath<sup>7+</sup> | string | 否 | 设置下载路径(默认在'internal://cache/'路径下)。<br/>-&nbsp;filePath:'workspace/test.txt':默认路径下创建workspace路径,并将文件存储在workspace路径下。<br/>-&nbsp;filePath:'test.txt':将文件存储在默认路径下。<br/>-&nbsp;filePath:'workspace/':默认路径下创建workspace路径,并将文件存储在workspace路径下。 |
A
anyueling 已提交
1196
| networkType | number | 否 | 设置允许下载的网络类型。<br/>-&nbsp;NETWORK_MOBILE:0x00000001<br/>-&nbsp;NETWORK_WIFI:0x00010000|
Z
zengyawen 已提交
1197
| title | string | 否 | 设置下载会话标题。 |
J
Jeam_wang 已提交
1198
| background | boolean | 否 | 后台任务通知开关,开启后可在通知中显示下载状态。 |
Z
zengyawen 已提交
1199 1200


Z
zengyawen 已提交
1201
## DownloadInfo<sup>7+</sup>
Z
zengyawen 已提交
1202

A
anyueling 已提交
1203 1204
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1205 1206
**系统能力**: SystemCapability.MiscServices.Download

Z
zengyawen 已提交
1207
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1208
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219
| downloadId | number | 是 | 下载的文件ID。 |
| failedReason | number | 否 | 下载失败原因,可以是任何[ERROR_*](#常量)常量。 |
| fileName | string | 是 | 下载的文件名。 |
| filePath | string | 是 | 存储文件的URI。 |
| pausedReason | number | 否 | 会话暂停的原因,可以是任何[PAUSED_*](#常量)常量。 |
| status | number | 是 | 下载状态代码,可以是任何[SESSION_*](#常量)常量。 |
| targetURI | string | 是 | 下载文件的URI。 |
| downloadTitle | string | 是 | 下载的文件的标题。 |
| downloadTotalBytes | number | 是 | 下载的文件的总大小(int&nbsp;bytes)。 |
| description | string | 是 | 待下载文件的描述信息。 |
| downloadedBytes | number | 是 | 实时下载大小(int&nbsp;&nbsp;bytes)。 |