js-apis-request.md 36.5 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
### off('complete' | 'fail')

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

A
anyueling 已提交
414
开启上传任务监听,异步方法,使用callback形式返回结果。
A
anyueling 已提交
415 416 417 418 419 420 421 422 423 424

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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 订阅的事件类型,取值为'complete',表示上传任务完成;取值为'fail',表示上传任务失败。|
A
anyueling 已提交
425 426 427 428 429 430 431
  | callback | function | 否 | 上传任务完成或失败的回调函数。 |

  回调函数的参数

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| &lt;Array&lt;TaskState&gt;&gt; | array | 是 | 上传任务返回结果 |
A
anyueling 已提交
432 433 434 435

**示例:**
  
  ```js
A
anyueling 已提交
436 437 438 439 440 441
  uploadTask.off('complete', function callback(TaskStates) {
    for (let i = 0; i < TaskState.length; i++ ) {
      console.info("upOnComplete taskState:" + JSON.stringify(TaskStates[i]));
    }
  }
  );
A
anyueling 已提交
442

A
anyueling 已提交
443 444 445 446 447 448
  uploadTask.off('fail', function callback(TaskStates) {
    for (let i = 0; i < TaskState.length; i++ ) {
      console.info("upOnFail taskState:" + JSON.stringify(TaskStates[i]));
    }
  }
  );
A
anyueling 已提交
449 450
  ```

Z
zengyawen 已提交
451 452 453 454 455 456 457 458 459 460 461

### remove

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

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

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

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

462 463 464
**返回值:**

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

468
**示例:**
Z
zengyawen 已提交
469
  
470
  ```js
Z
zengyawen 已提交
471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492
  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

493 494 495
**参数:**

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

499
**示例:**
Z
zengyawen 已提交
500
  
501
  ```js
Z
zengyawen 已提交
502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517
  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 已提交
518 519
**需要权限**:ohos.permission.INTERNET

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

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

A
anyueling 已提交
530 531 532 533 534 535 536 537 538 539 540
## TaskState

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

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

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

## File

A
anyueling 已提交
544 545 546
**需要权限**:ohos.permission.INTERNET

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

Z
zengyawen 已提交
548
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
549
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
550 551
| filename | string | 否 | multipart提交时,请求头中的文件名。 |
| name | string | 否 | multipart提交时,表单项目的名称,缺省为file。 |
Z
zengyawen 已提交
552
| 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 已提交
553
| type | string | 否 | 文件的内容类型,默认根据文件名或路径的后缀获取。 |
Z
zengyawen 已提交
554 555 556 557


## RequestData

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

A
anyueling 已提交
560
**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download
Z
zengyawen 已提交
561
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
562
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
563 564
| name | string | 是 | 表示表单元素的名称。 |
| value | string | 是 | 表示表单元素的值。 |
Z
zengyawen 已提交
565 566


A
anyueling 已提交
567
## request.download
Z
zengyawen 已提交
568 569 570 571 572

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

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

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

Z
zengyawen 已提交
575 576 577 578
**需要权限**:ohos.permission.INTERNET

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

579 580 581
**参数:**

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

585 586 587
**返回值:**

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

591
**示例:**
Z
zengyawen 已提交
592
  
593
  ```js
594
  let downloadTask;
Z
zengyawen 已提交
595 596 597 598 599 600 601 602
  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 已提交
603
## request.download
Z
zengyawen 已提交
604 605 606 607 608

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

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

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

Z
zengyawen 已提交
611 612 613 614
**需要权限**:ohos.permission.INTERNET

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

615 616 617
**参数:**

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

622
**示例:**
Z
zengyawen 已提交
623
  
624
  ```js
625
  let downloadTask;
Z
zengyawen 已提交
626 627 628 629 630 631 632 633 634 635
  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 已提交
636 637
## request.download<sup>9+</sup>

A
anyueling 已提交
638
download(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
A
anyueling 已提交
639 640 641 642 643 644 645 646 647 648 649

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

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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
650
  | context | BaseContext | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
651 652 653 654 655 656 657
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |

**返回值:**

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

A
anyueling 已提交
659 660 661 662 663 664 665 666 667 668 669 670 671 672
**示例:**
  
  ```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 已提交
673
download(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
A
anyueling 已提交
674 675 676 677 678 679 680 681 682 683 684

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

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

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

**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
685
  | context | BaseContext | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701
  | 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 已提交
702 703 704 705 706 707 708
## DownloadTask

下载任务。


### on('progress')

Z
zengyawen 已提交
709
on(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
710 711 712 713 714 715 716

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

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

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

717 718 719
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
720
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
721 722
  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 是 | 下载的回调函数。 |
Z
zengyawen 已提交
723 724 725

  回调函数的参数:

726 727 728 729
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| receivedSize | number | 是 | 当前下载的进度,单位为KB。 |
| totalSize | number | 是 | 下载文件的总大小,单位为KB。 |
Z
zengyawen 已提交
730

731
**示例:**
Z
zengyawen 已提交
732
  
733
  ```js
734
  downloadTask.on('progress', function download_callback(receivedSize, totalSize) {
Z
zengyawen 已提交
735 736
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
737
  );
Z
zengyawen 已提交
738 739 740 741 742
  ```


### off('progress')

Z
zengyawen 已提交
743
off(type: 'progress', callback?: (receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
744 745 746 747 748 749 750

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

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

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

751 752 753
**参数:**

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

  回调函数的参数:

760 761 762 763
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| receivedSize | number | 是 | 当前下载的进度。 |
| totalSize | number | 是 | 下载文件的总大小。 |
Z
zengyawen 已提交
764

765
**示例:**
Z
zengyawen 已提交
766
  
767
  ```js
768 769 770
  downloadTask .off('progress', function download_callback(receivedSize, totalSize) {
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
771
  );
Z
zengyawen 已提交
772 773 774
  ```


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

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

Z
zengyawen 已提交
779
开启下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
780 781 782 783 784

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

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

785 786 787
**参数:**

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

792
**示例:**
Z
zengyawen 已提交
793
  
794
  ```js
795 796 797
  downloadTask.on('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
798
  );
Z
zengyawen 已提交
799 800 801
  ```


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

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

Z
zengyawen 已提交
806
取消下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
807 808 809 810 811

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

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

812 813 814
**参数:**

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

819
**示例:**
Z
zengyawen 已提交
820
  
821
  ```js
822 823 824
  downloadTask.off('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
825
  );
Z
zengyawen 已提交
826 827 828 829 830
  ```


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

Z
zengyawen 已提交
831
on(type: 'fail', callback: (err: number) =&gt; void): void
Z
zengyawen 已提交
832 833 834 835 836 837 838

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

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

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

839 840 841
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
842
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
843 844
  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 是 | 下载失败的回调函数。 |
Z
zengyawen 已提交
845 846 847

  回调函数的参数:

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

852
**示例:**
Z
zengyawen 已提交
853
  
854
  ```js 
855 856 857
  downloadTask.on('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  }
Z
zengyawen 已提交
858
  );
Z
zengyawen 已提交
859 860 861 862 863
  ```


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

Z
zengyawen 已提交
864
off(type: 'fail', callback?: (err: number) =&gt; void): void
Z
zengyawen 已提交
865 866 867 868 869 870 871

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

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

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

872 873 874
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
875
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
876 877
  | type | string | 是 | 取消订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 否 | 取消下载失败的回调函数。 |
Z
zengyawen 已提交
878 879 880

  回调函数的参数

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

885
**示例:**
Z
zengyawen 已提交
886
  
887
  ```js
888 889 890
  downloadTask.off('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  } 
Z
zengyawen 已提交
891
  );
Z
zengyawen 已提交
892 893 894 895 896 897 898 899 900 901 902 903 904
  ```


### remove

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

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

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

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

905 906 907
**返回值:**

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

911
**示例:**
Z
zengyawen 已提交
912
  
913
  ```js
Z
zengyawen 已提交
914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935
  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

936 937 938
**参数:**

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

942
**示例:**
Z
zengyawen 已提交
943
  
944
  ```js
Z
zengyawen 已提交
945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968
  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

969
**参数:**
Z
zengyawen 已提交
970
    | 类型 | 说明 |
Z
zengyawen 已提交
971
  | -------- | -------- |
Z
zengyawen 已提交
972
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
Z
zengyawen 已提交
973

974
**示例:**
Z
zengyawen 已提交
975
  
976
  ```js
Z
zengyawen 已提交
977
  downloadTask.query().then((downloadInfo) => {    
Z
zengyawen 已提交
978
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
Z
zengyawen 已提交
979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994
  }) .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

995 996 997
**参数:**

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

1001
**示例:**
Z
zengyawen 已提交
1002
  
1003
  ```js
Z
zengyawen 已提交
1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023
  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

1024 1025 1026
**返回值:**

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

1030
**示例:**
Z
zengyawen 已提交
1031
  
1032
  ```js
Z
zengyawen 已提交
1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050
  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

1051 1052 1053
**参数:**

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

1057
**示例:**
Z
zengyawen 已提交
1058
  
1059
  ```js
Z
zengyawen 已提交
1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071
  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 已提交
1072
pause(): Promise&lt;void&gt;
Z
zengyawen 已提交
1073 1074 1075 1076 1077 1078 1079

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

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

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

1080 1081 1082
**返回值:**

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

1086
**示例:**
Z
zengyawen 已提交
1087
  
1088
  ```js
Z
zengyawen 已提交
1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102
  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 已提交
1103
pause(callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
1104 1105 1106 1107 1108 1109 1110

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

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

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

1111 1112 1113
**参数:**

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

1117
**示例:**
Z
zengyawen 已提交
1118
  
1119
  ```js
Z
zengyawen 已提交
1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135
  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 已提交
1136
resume(): Promise&lt;void&gt;
Z
zengyawen 已提交
1137 1138 1139 1140 1141 1142 1143

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

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

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

1144 1145 1146
**参数:**

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

1150
**示例:**
Z
zengyawen 已提交
1151
  
1152
  ```js
Z
zengyawen 已提交
1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167
  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 已提交
1168
resume(callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
1169 1170 1171 1172 1173 1174 1175

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

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

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

1176 1177 1178
**参数:**

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

1182
**示例:**
Z
zengyawen 已提交
1183
  
1184
  ```js
Z
zengyawen 已提交
1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200
  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 已提交
1201 1202
**需要权限**:ohos.permission.INTERNET

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

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| url | string | 是 | 资源地址。 |
| header | object | 否 | 添加要包含在下载请求中的HTTP或HTTPS标志头。 |
A
anyueling 已提交
1209 1210
| enableMetered | boolean | 否 | 设置是否允许在按流量计费的连接下下载。<br/>-&nbsp;true:是<br/>-&nbsp;false:否 |
| enableRoaming | boolean | 否 | 设置是否允许在漫游网络中下载。 <br/>-&nbsp;true:是<br/>-&nbsp;false:否|
Z
zengyawen 已提交
1211
| description | string | 否 | 设置下载会话的描述。 |
1212
| 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 已提交
1213
| networkType | number | 否 | 设置允许下载的网络类型。<br/>-&nbsp;NETWORK_MOBILE:0x00000001<br/>-&nbsp;NETWORK_WIFI:0x00010000|
Z
zengyawen 已提交
1214
| title | string | 否 | 设置下载会话标题。 |
J
Jeam_wang 已提交
1215
| background | boolean | 否 | 后台任务通知开关,开启后可在通知中显示下载状态。 |
Z
zengyawen 已提交
1216 1217


Z
zengyawen 已提交
1218
## DownloadInfo<sup>7+</sup>
Z
zengyawen 已提交
1219

A
anyueling 已提交
1220 1221
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1222 1223
**系统能力**: SystemCapability.MiscServices.Download

Z
zengyawen 已提交
1224
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1225
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236
| 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)。 |