1# 上传下载 2 3 4>  **说明:** 5> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 6 7 8## 导入模块 9 10 11```js 12import request from '@ohos.request'; 13``` 14 15 16## 限制与约束 17 18默认支持https,如果要支持http,需要在config.json里增加network标签,属性标识 "cleartextTraffic": true。即: 19 20``` 21 "deviceConfig": { 22 "default": { 23 "network": { 24 "cleartextTraffic": true 25 } 26 ... 27 } 28 } 29``` 30 31 32## 常量 33 34**需要权限**:ohos.permission.INTERNET 35 36**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download。 37 38| 名称 | 参数类型 | 可读 | 可写 | 说明 | 39| -------- | -------- | -------- | -------- | -------- | 40| NETWORK_MOBILE | number | 是 | 否 | 使用蜂窝网络时允许下载的位标志。 | 41| NETWORK_WIFI | number | 是 | 否 | 使用WLAN时允许下载的位标志。 | 42| ERROR_CANNOT_RESUME<sup>7+</sup> | number | 是 | 否 | 某些临时错误导致的恢复下载失败。 | 43| ERROR_DEVICE_NOT_FOUND<sup>7+</sup> | number | 是 | 否 | 找不到SD卡等存储设备。 | 44| ERROR_FILE_ALREADY_EXISTS<sup>7+</sup> | number | 是 | 否 | 要下载的文件已存在,下载会话不能覆盖现有文件。 | 45| ERROR_FILE_ERROR<sup>7+</sup> | number | 是 | 否 | 文件操作失败。 | 46| ERROR_HTTP_DATA_ERROR<sup>7+</sup> | number | 是 | 否 | HTTP传输失败。 | 47| ERROR_INSUFFICIENT_SPACE<sup>7+</sup> | number | 是 | 否 | 存储空间不足。 | 48| ERROR_TOO_MANY_REDIRECTS<sup>7+</sup> | number | 是 | 否 | 网络重定向过多导致的错误。 | 49| ERROR_UNHANDLED_HTTP_CODE<sup>7+</sup> | number | 是 | 否 | 无法识别的HTTP代码。 | 50| ERROR_UNKNOWN<sup>7+</sup> | number | 是 | 否 | 未知错误。 | 51| PAUSED_QUEUED_FOR_WIFI<sup>7+</sup> | number | 是 | 否 | 下载被暂停并等待WLAN连接,因为文件大小超过了使用蜂窝网络的会话允许的最大值。 | 52| PAUSED_UNKNOWN<sup>7+</sup> | number | 是 | 否 | 未知原因导致暂停下载。 | 53| PAUSED_WAITING_FOR_NETWORK<sup>7+</sup> | number | 是 | 否 | 由于网络问题(例如网络断开)而暂停下载。 | 54| PAUSED_WAITING_TO_RETRY<sup>7+</sup> | number | 是 | 否 | 发生网络错误,将重试下载会话。 | 55| SESSION_FAILED<sup>7+</sup> | number | 是 | 否 | 下载会话已失败,将不会重试。 | 56| SESSION_PAUSED<sup>7+</sup> | number | 是 | 否 | 下载会话已暂停。 | 57| SESSION_PENDING<sup>7+</sup> | number | 是 | 否 | 正在调度下载会话。 | 58| SESSION_RUNNING<sup>7+</sup> | number | 是 | 否 | 下载会话正在进行中。 | 59| SESSION_SUCCESSFUL<sup>7+</sup> | number | 是 | 否 | 下载会话已完成。 | 60 61 62## request.upload 63 64upload(config: UploadConfig): Promise<UploadTask> 65 66上传,异步方法,使用promise形式返回结果。 67 68**需要权限**:ohos.permission.INTERNET 69 70**系统能力**: SystemCapability.MiscServices.Upload 71 72**参数:** 73 74 | 参数名 | 类型 | 必填 | 说明 | 75 | -------- | -------- | -------- | -------- | 76 | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 | 77 78**返回值:** 79 80 | 类型 | 说明 | 81 | -------- | -------- | 82 | Promise<[UploadTask](#uploadtask)> | 返回上传任务。 | 83 84**示例:** 85 86 ```js 87 let file1 = { filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }; 88 let data = { name: "name123", value: "123" }; 89 let header = { key1: "value1", key2: "value2" }; 90 let uploadTask; 91 request.upload({ url: 'https://patch', header: header, method: "POST", files: [file1], data: [data] }).then((data) => { 92 uploadTask = data; 93 }).catch((err) => { 94 console.error('Failed to request the upload. Cause: ' + JSON.stringify(err)); 95 }) 96 ``` 97 98 99## request.upload 100 101upload(config: UploadConfig, callback: AsyncCallback<UploadTask>): void 102 103上传,异步方法,使用callback形式返回结果。 104 105**需要权限**:ohos.permission.INTERNET 106 107**系统能力**: SystemCapability.MiscServices.Upload 108 109**参数:** 110 111 | 参数名 | 参数类型 | 必填 | 说明 | 112 | -------- | -------- | -------- | -------- | 113 | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 | 114 | callback | AsyncCallback<[UploadTask](#uploadtask)> | 否 | 回调函数,异步返回UploadTask对象。 | 115 116**示例:** 117 118 ```js 119 let file1 = { filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }; 120 let data = { name: "name123", value: "123" }; 121 let header = { key1: "value1", key2: "value2" }; 122 let uploadTask; 123 request.upload({ url: 'https://patch', header: header, method: "POST", files: [file1], data: [data] }, (err, data) => { 124 if (err) { 125 console.error('Failed to request the upload. Cause: ' + JSON.stringify(err)); 126 return; 127 } 128 uploadTask = data; 129 }); 130 ``` 131 132 133## UploadTask 134 135上传任务,使用下列方法前,需要先获取UploadTask对象。 136 137 138### on('progress') 139 140on(type: 'progress', callback:(uploadedSize: number, totalSize: number) => void): void 141 142开启上传任务监听,异步方法,使用callback形式返回结果。 143 144**需要权限**:ohos.permission.INTERNET 145 146**系统能力**: SystemCapability.MiscServices.Upload 147 148**参数:** 149 150 | 参数名 | 类型 | 必填 | 说明 | 151 | -------- | -------- | -------- | -------- | 152 | type | string | 是 | 订阅的事件类型,取值为'progress'(上传的进度信息)。 | 153 | callback | function | 是 | 上传进度的回调函数。 | 154 155 回调函数的参数 156 157| 参数名 | 类型 | 必填 | 说明 | 158| -------- | -------- | -------- | -------- | 159| uploadedSize | number | 是 | 当前已上传文件大小,单位为KB。 | 160| totalSize | number | 是 | 上传文件的总大小,单位为KB。 | 161 162**示例:** 163 164 ```js 165 uploadTask.on('progress', function callback(uploadedSize, totalSize) { 166 console.info("upload totalSize:" + totalSize + " uploadedSize:" + uploadedSize); 167 } 168 ); 169 ``` 170 171 172### on('headerReceive')<sup>7+</sup> 173 174on(type: 'headerReceive', callback: (header: object) => void): void 175 176开启上传任务监听,异步方法,使用callback形式返回结果。 177 178**需要权限**:ohos.permission.INTERNET 179 180**系统能力**: SystemCapability.MiscServices.Upload 181 182**参数:** 183 184 | 参数名 | 类型 | 必填 | 说明 | 185 | -------- | -------- | -------- | -------- | 186 | type | string | 是 | 订阅的事件类型,取值为'headerReceive'(接收响应头)。 | 187 | callback | function | 是 | HTTP Response Header事件的回调函数。 | 188 189 回调函数的参数: 190 191| 参数名 | 类型 | 必填 | 说明 | 192| -------- | -------- | -------- | -------- | 193| header | object | 是 | HTTP Response Header。 | 194 195**示例:** 196 197 ```js 198 uploadTask.on('headerReceive', function callback(headers){ 199 console.info("upOnHeader headers:" + JSON.stringify(headers)); 200 } 201 ); 202 ``` 203 204 205### off('progress') 206 207off(type: 'progress', callback?: (uploadedSize: number, totalSize: number) => void): void 208 209关闭上传任务监听,异步方法,使用callback形式返回结果。 210 211**需要权限**:ohos.permission.INTERNET 212 213**系统能力**: SystemCapability.MiscServices.Upload 214 215**参数:** 216 217 | 参数名 | 参数类型 | 必填 | 说明 | 218 | -------- | -------- | -------- | -------- | 219 | type | string | 是 | 取消订阅的事件类型,取值为'progress'(上传的进度信息)。 | 220 | callback | function | 否 | 上传任务的回调函数。 | 221 222 回调函数的参数: 223 224| 参数名 | 类型 | 必填 | 说明 | 225| -------- | -------- | -------- | -------- | 226| uploadedSize | number | 是 | 当前已上传文件的大小,单位为KB。 | 227| totalSize | number | 是 | 上传文件的总大小,单位为KB。 | 228 229**示例:** 230 231 ```js 232 uploadTask.off('progress', function callback(uploadedSize, totalSize) { 233 console.info('uploadedSize: ' + uploadedSize, 'totalSize: ' + totalSize); 234 } 235 ); 236 ``` 237 238 239### off('headerReceive')<sup>7+</sup> 240 241off(type: 'headerReceive', callback?: (header: object) => void): void 242 243关闭上传任务监听,异步方法,使用callback形式返回结果。 244 245**需要权限**:ohos.permission.INTERNET 246 247**系统能力**: SystemCapability.MiscServices.Upload 248 249**参数:** 250 251 | 参数名 | 参数类型 | 必填 | 说明 | 252 | -------- | -------- | -------- | -------- | 253 | type | string | 是 | 取消订阅的事件类型,取值为'headerReceive'(接收响应头)。 | 254 | callback | function | 否 | HTTP Response Header事件的回调函数。 | 255 256 回调函数的参数: 257 258| 参数名 | 类型 | 必填 | 说明 | 259| -------- | -------- | -------- | -------- | 260| header | object | 是 | HTTP Response Header。 | 261 262**示例:** 263 264 ```js 265 uploadTask.off('headerReceive', function callback(headers) { 266 console.info("upOnHeader headers:" + JSON.stringify(headers)); 267 } 268 ); 269 ``` 270 271 272### remove 273 274remove(): Promise<boolean> 275 276移除上传的任务,异步方法,使用promise形式返回结果。 277 278**需要权限**:ohos.permission.INTERNET 279 280**系统能力**: SystemCapability.MiscServices.Upload 281 282**返回值:** 283 284 | 类型 | 说明 | 285 | -------- | -------- | 286 | Promise<boolean> | 移除任务是否成功。true:成功,false:不成功。 | 287 288**示例:** 289 290 ```js 291 uploadTask.remove().then((result) => { 292 if (result) { 293 console.info('Upload task removed successfully. '); 294 } else { 295 console.error('Failed to remove the upload task. '); 296 } 297 }).catch((err) => { 298 console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err)); 299 }); 300 ``` 301 302 303### remove 304 305remove(callback: AsyncCallback<boolean>): void 306 307移除上传的任务,异步方法,使用callback形式返回结果。 308 309**需要权限**:ohos.permission.INTERNET 310 311**系统能力**: SystemCapability.MiscServices.Upload 312 313**参数:** 314 315 | 参数名 | 参数类型 | 必填 | 说明 | 316 | -------- | -------- | -------- | -------- | 317 | callback | AsyncCallback<boolean> | 是 | 移除任务的回调函数。 | 318 319**示例:** 320 321 ```js 322 uploadTask.remove((err, result) => { 323 if (err) { 324 console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err)); 325 return; 326 } 327 if (result) { 328 console.info('Upload task removed successfully.'); 329 } else { 330 console.error('Failed to remove the upload task.'); 331 } 332 }); 333 ``` 334 335 336## UploadConfig 337 338**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Upload。 339 340| 名称 | 类型 | 必填 | 说明 | 341| -------- | -------- | -------- | -------- | 342| url | string | 是 | 资源地址。 | 343| header | object | 是 | 添加要包含在上载请求中的HTTP或HTTPS标志头。 | 344| method | string | 是 | 请求方法:POST、PUT。缺省为POST。 | 345| files | Array<[File](#file)> | 是 | 要上传的文件列表。请使用 multipart/form-data提交。 | 346| data | Array<[RequestData](#requestdata)> | 是 | 请求的表单数据。 | 347 348 349## File 350 351**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Upload。 352 353| 名称 | 类型 | 必填 | 说明 | 354| -------- | -------- | -------- | -------- | 355| filename | string | 否 | multipart提交时,请求头中的文件名。 | 356| name | string | 否 | multipart提交时,表单项目的名称,缺省为file。 | 357| uri | string | 是 | 文件的本地存储路径。<br/>支持“dataability”和“internal”两种协议类型,但“internal”仅支持临时目录,示例:<br/>dataability:///com.domainname.dataability.persondata/person/10/file.txt<br/>internal://cache/path/to/file.txt | 358| type | string | 否 | 文件的内容类型,默认根据文件名或路径的后缀获取。 | 359 360 361## RequestData 362 363**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Upload。 364 365| 名称 | 类型 | 必填 | 说明 | 366| -------- | -------- | -------- | -------- | 367| name | string | 是 | 表示表单元素的名称。 | 368| value | string | 是 | 表示表单元素的值。 | 369 370 371## request.download 372 373download(config: DownloadConfig): Promise<DownloadTask> 374 375下载,异步方法,使用promise形式返回结果。 376 377**需要权限**:ohos.permission.INTERNET 378 379**系统能力**: SystemCapability.MiscServices.Download 380 381**参数:** 382 383 | 参数名 | 类型 | 必填 | 说明 | 384 | -------- | -------- | -------- | -------- | 385 | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 | 386 387**返回值:** 388 389 | 类型 | 说明 | 390 | -------- | -------- | 391 | Promise<[DownloadTask](#downloadtask)> | 返回下载任务。 | 392 393**示例:** 394 395 ```js 396 let downloadTask; 397 request.download({ url: 'https://xxxx/xxxx.hap' }).then((data) => { 398 downloadTask = data; 399 }).catch((err) => { 400 console.error('Failed to request the download. Cause: ' + JSON.stringify(err)); 401 }) 402 ``` 403 404 405## request.download 406 407download(config: DownloadConfig, callback: AsyncCallback<DownloadTask>): void 408 409下载,异步方法,使用callback形式返回结果。 410 411**需要权限**:ohos.permission.INTERNET 412 413**系统能力**: SystemCapability.MiscServices.Download 414 415**参数:** 416 417 | 参数名 | 参数类型 | 必填 | 说明 | 418 | -------- | -------- | -------- | -------- | 419 | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 | 420 | callback | AsyncCallback<[DownloadTask](#downloadtask)> | 否 | 下载接口的回调函数。 | 421 422**示例:** 423 424 ```js 425 let downloadTask; 426 request.download({ url: 'https://xxxx/xxxxx.hap', 427 filePath: 'xxx/xxxxx.hap'}, (err, data) => { 428 if (err) { 429 console.error('Failed to request the download. Cause: ' + JSON.stringify(err)); 430 return; 431 } 432 downloadTask = data; 433 }); 434 ``` 435 436 437## DownloadTask 438 439下载任务。 440 441 442### on('progress') 443 444on(type: 'progress', callback:(receivedSize: number, totalSize: number) => void): void 445 446开启下载任务监听,异步方法,使用callback形式返回结果。 447 448**需要权限**:ohos.permission.INTERNET 449 450**系统能力**: SystemCapability.MiscServices.Download 451 452**参数:** 453 454 | 参数名 | 类型 | 必填 | 说明 | 455 | -------- | -------- | -------- | -------- | 456 | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 | 457 | callback | function | 是 | 下载的回调函数。 | 458 459 回调函数的参数: 460 461| 参数名 | 类型 | 必填 | 说明 | 462| -------- | -------- | -------- | -------- | 463| receivedSize | number | 是 | 当前下载的进度,单位为KB。 | 464| totalSize | number | 是 | 下载文件的总大小,单位为KB。 | 465 466**示例:** 467 468 ```js 469 downloadTask.on('progress', function download_callback(receivedSize, totalSize) { 470 console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize); 471 } 472 ); 473 }); 474 ``` 475 476 477### off('progress') 478 479off(type: 'progress', callback?: (receivedSize: number, totalSize: number) => void): void 480 481关闭下载任务监听,异步方法,使用callback形式返回结果。 482 483**需要权限**:ohos.permission.INTERNET 484 485**系统能力**: SystemCapability.MiscServices.Download 486 487**参数:** 488 489 | 参数名 | 参数类型 | 必填 | 说明 | 490 | -------- | -------- | -------- | -------- | 491 | type | string | 是 | 取消订阅的事件类型,取值为'progress'(下载的进度信息)。 | 492 | callback | function | 否 | 下载任务的回调函数。 | 493 494 回调函数的参数: 495 496| 参数名 | 类型 | 必填 | 说明 | 497| -------- | -------- | -------- | -------- | 498| receivedSize | number | 是 | 当前下载的进度。 | 499| totalSize | number | 是 | 下载文件的总大小。 | 500 501**示例:** 502 503 ```js 504 downloadTask .off('progress', function download_callback(receivedSize, totalSize) { 505 console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize); 506 } 507 ); 508 }); 509 ``` 510 511 512### on('complete'|'pause'|'remove')<sup>7+</sup> 513 514on(type: 'complete'|'pause'|'remove', callback:() => void): void 515 516开启下载任务相关的监听,异步方法,使用callback形式返回。 517 518**需要权限**:ohos.permission.INTERNET 519 520**系统能力**: SystemCapability.MiscServices.Download 521 522**参数:** 523 524 | 参数名 | 类型 | 必填 | 说明 | 525 | -------- | -------- | -------- | -------- | 526 | type | string | 是 | 订阅的事件类型。<br>- 取值为'complete',表示下载任务完成;<br/>- 取值为'pause',表示下载任务暂停;<br/>- 取值为'remove',表示下载任务移除。 | 527 | callback | function | 是 | 回调函数。 | 528 529**示例:** 530 531 ```js 532 downloadTask.on('complete', function callback() { 533 console.info('Download task completed.'); 534 } 535 ); 536 }); 537 ``` 538 539 540### off('complete'|'pause'|'remove')<sup>7+</sup> 541 542off(type: 'complete'|'pause'|'remove', callback?:() => void): void 543 544取消下载任务相关的监听,异步方法,使用callback形式返回。 545 546**需要权限**:ohos.permission.INTERNET 547 548**系统能力**: SystemCapability.MiscServices.Download 549 550**参数:** 551 552 | 参数名 | 类型 | 必填 | 说明 | 553 | -------- | -------- | -------- | -------- | 554 | type | string | 是 | 取消订阅的事件类型。<br/>- 取值为'complete',表示下载任务完成;<br/>- 取值为'pause',表示下载任务暂停;<br/>- 取值为'remove',表示下载任务移除。 | 555 | callback | function | 否 | 回调函数。 | 556 557**示例:** 558 559 ```js 560 downloadTask.off('complete', function callback() { 561 console.info('Download task completed.'); 562 } 563 ); 564 }); 565 ``` 566 567 568### on('fail')<sup>7+</sup> 569 570on(type: 'fail', callback: (err: number) => void): void 571 572开启下载任务失败监听,异步方法,使用callback形式返回结果。 573 574**需要权限**:ohos.permission.INTERNET 575 576**系统能力**: SystemCapability.MiscServices.Download 577 578**参数:** 579 580 | 参数名 | 类型 | 必填 | 说明 | 581 | -------- | -------- | -------- | -------- | 582 | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 | 583 | callback | function | 是 | 下载失败的回调函数。 | 584 585 回调函数的参数: 586 587| 参数名 | 类型 | 必填 | 说明 | 588| -------- | -------- | -------- | -------- | 589| err | number | 是 | 下载失败的错误码,错误原因见[ERROR.*](#常量)。 | 590 591**示例:** 592 593 ```js 594 downloadTask.on('fail', function callBack(err) { 595 console.info('Download task failed. Cause:' + err); 596 } 597 ); 598 }); 599 ``` 600 601 602### off('fail')<sup>7+</sup> 603 604off(type: 'fail', callback?: (err: number) => void): void 605 606取消下载任务失败监听,异步方法,使用callback形式返回结果。 607 608**需要权限**:ohos.permission.INTERNET 609 610**系统能力**: SystemCapability.MiscServices.Download 611 612**参数:** 613 614 | 参数名 | 类型 | 必填 | 说明 | 615 | -------- | -------- | -------- | -------- | 616 | type | string | 是 | 取消订阅的事件类型,取值为'fail'(下载失败)。 | 617 | callback | function | 否 | 取消下载失败的回调函数。 | 618 619 回调函数的参数 620 621| 参数名 | 类型 | 必填 | 说明 | 622| -------- | -------- | -------- | -------- | 623| err | number | 是 | 下载失败的错误码。错误原因见[ERROR_*](#常量)。 | 624 625**示例:** 626 627 ```js 628 downloadTask.off('fail', function callBack(err) { 629 console.info('Download task failed. Cause:' + err); 630 } 631 ); 632 }); 633 ``` 634 635 636### remove 637 638remove(): Promise<boolean> 639 640移除下载的任务,异步方法,使用promise形式返回结果。 641 642**需要权限**:ohos.permission.INTERNET 643 644**系统能力**: SystemCapability.MiscServices.Download 645 646**返回值:** 647 648 | 类型 | 说明 | 649 | -------- | -------- | 650 | Promise<boolean> | 移除任务是否成功。 | 651 652**示例:** 653 654 ```js 655 downloadTask.remove().then((result) => { 656 if (result) { 657 console.info('Download task removed.'); 658 } else { 659 console.error('Failed to remove the download task.'); 660 } 661 }).catch ((err) => { 662 console.error('Failed to remove the download task.'); 663 }); 664 ``` 665 666 667### remove 668 669remove(callback: AsyncCallback<boolean>): void 670 671移除下载的任务,异步方法,使用callback形式返回结果。 672 673**需要权限**:ohos.permission.INTERNET 674 675**系统能力**: SystemCapability.MiscServices.Download 676 677**参数:** 678 679 | 参数名 | 参数类型 | 必填 | 说明 | 680 | -------- | -------- | -------- | -------- | 681 | callback | AsyncCallback<boolean> | 是 | 移除任务是否成功。 | 682 683**示例:** 684 685 ```js 686 downloadTask.remove((err, result)=>{ 687 if(err) { 688 console.error('Failed to remove the download task.'); 689 return; 690 } 691 if (result) { 692 console.info('Download task removed.'); 693 } else { 694 console.error('Failed to remove the download task.'); 695 } 696 }); 697 ``` 698 699 700### query<sup>7+</sup> 701 702query(): Promise<DownloadInfo> 703 704查询下载任务,异步方法,使用promise形式返回DownloadInfo里的信息。 705 706**需要权限**:ohos.permission.INTERNET 707 708**系统能力**: SystemCapability.MiscServices.Download 709 710**参数:** 711 | 类型 | 说明 | 712 | -------- | -------- | 713 | Promise<[DownloadInfo](#downloadinfo7)> | 查询下载任务信息。 | 714 715**示例:** 716 717 ```js 718 downloadTask.query().then((downloadInfo) => { 719 console.info('Download task queried. Data:' + JSON.stringify(downloadInfo)) 720 }) .catch((err) => { 721 console.error('Failed to query the download task. Cause:' + err) 722 }); 723 ``` 724 725 726### query<sup>7+</sup> 727 728query(callback: AsyncCallback<DownloadInfo>): void 729 730查询下载的任务,异步方法,使用callback形式返回结果。 731 732**需要权限**:ohos.permission.INTERNET 733 734**系统能力**: SystemCapability.MiscServices.Download 735 736**参数:** 737 738 | 参数名 | 参数类型 | 必填 | 说明 | 739 | -------- | -------- | -------- | -------- | 740 | callback | AsyncCallback<[DownloadInfo](#downloadinfo7)> | 是 | 查询下载任务的回调函数。 | 741 742**示例:** 743 744 ```js 745 downloadTask.query((err, downloadInfo)=>{ 746 if(err) { 747 console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err)); 748 } else { 749 console.info('download query success. data:'+ JSON.stringify(downloadInfo)); 750 } 751 }); 752 ``` 753 754 755### queryMimeType<sup>7+</sup> 756 757queryMimeType(): Promise<string> 758 759查询下载的任务的 MimeType,异步方法,使用promise形式返回结果。 760 761**需要权限**:ohos.permission.INTERNET 762 763**系统能力**: SystemCapability.MiscServices.Download 764 765**返回值:** 766 767 | 类型 | 说明 | 768 | -------- | -------- | 769 | Promise<string> | 查询下载任务的MimeType。 | 770 771**示例:** 772 773 ```js 774 downloadTask.queryMimeType().then((data) => { 775 console.info('Download task queried. Data:' + JSON.stringify(data)); 776 }).catch((err) => { 777 console.error('Failed to query the download MimeType. Cause:' + JSON.stringify(err)) 778 }); 779 ``` 780 781 782### queryMimeType<sup>7+</sup> 783 784queryMimeType(callback: AsyncCallback<string>): void; 785 786查询下载的任务的 MimeType,异步方法,使用callback形式返回结果。 787 788**需要权限**:ohos.permission.INTERNET 789 790**系统能力**: SystemCapability.MiscServices.Download 791 792**参数:** 793 794 | 参数名 | 参数类型 | 必填 | 说明 | 795 | -------- | -------- | -------- | -------- | 796 | callback | AsyncCallback<string> | 是 | 查询下载任务的MimeType的回调函数。 | 797 798**示例:** 799 800 ```js 801 downloadTask.queryMimeType((err, data)=>{ 802 if(err) { 803 console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err)); 804 } else { 805 console.info('Download task queried. data:' + JSON.stringify(data)); 806 } 807 }); 808 ``` 809 810 811### pause<sup>7+</sup> 812 813pause(): Promise<void> 814 815暂停下载任务,异步方法,使用promise形式返回结果。 816 817**需要权限**:ohos.permission.INTERNET 818 819**系统能力**: SystemCapability.MiscServices.Download 820 821**返回值:** 822 823 | 类型 | 说明 | 824 | -------- | -------- | 825 | Promise<void> | 暂停下载任务是否成功。 | 826 827**示例:** 828 829 ```js 830 downloadTask.pause().then((result) => { 831 if (result) { 832 console.info('Download task paused. '); 833 } else { 834 console.error('Failed to pause the download task. Cause:' + JSON.stringify(result)); 835 } 836 }).catch((err) => { 837 console.error('Failed to pause the download task. Cause:' + JSON.stringify(err)); 838 }); 839 ``` 840 841 842### pause<sup>7+</sup> 843 844pause(callback: AsyncCallback<void>): void 845 846暂停下载任务,异步方法,使用callback形式返回结果。 847 848**需要权限**:ohos.permission.INTERNET 849 850**系统能力**: SystemCapability.MiscServices.Download 851 852**参数:** 853 854 | 参数名 | 参数类型 | 必填 | 说明 | 855 | -------- | -------- | -------- | -------- | 856 | callback | AsyncCallback<void> | 是 | 暂停下载任务的回调函数。 | 857 858**示例:** 859 860 ```js 861 downloadTask.pause((err, result)=>{ 862 if(err) { 863 console.error('Failed to pause the download task. Cause:' + JSON.stringify(err)); 864 return; 865 } 866 if (result) { 867 console.info('Download task paused. '); 868 } else { 869 console.error('Failed to pause the download task. Cause:' + JSON.stringify(result)); 870 } 871 }); 872 ``` 873 874 875### resume<sup>7+</sup> 876 877resume(): Promise<void> 878 879重新启动暂停的下载任务,异步方法,使用promise形式返回结果。 880 881**需要权限**:ohos.permission.INTERNET 882 883**系统能力**: SystemCapability.MiscServices.Download 884 885**参数:** 886 887 | 类型 | 说明 | 888 | -------- | -------- | 889 | Promise<void> | 重新启动暂停的下载任务是否成功。 | 890 891**示例:** 892 893 ```js 894 downloadTask.resume().then((result) => { 895 if (result) { 896 console.info('Download task resumed.') 897 } else { 898 console.error('Failed to resume the download task. '); 899 } 900 console.info('Download task resumed.') 901 }).catch((err) => { 902 console.error('Failed to resume the download task. Cause:' + err); 903 }); 904 ``` 905 906 907### resume<sup>7+</sup> 908 909resume(callback: AsyncCallback<void>): void 910 911重新启动暂停的下载任务,异步方法,使用callback形式返回结果。 912 913**需要权限**:ohos.permission.INTERNET 914 915**系统能力**: SystemCapability.MiscServices.Download 916 917**参数:** 918 919 | 参数名 | 参数类型 | 必填 | 说明 | 920 | -------- | -------- | -------- | -------- | 921 | callback | AsyncCallback<void> | 是 | 重新启动暂停的下载任务的回调函数。 | 922 923**示例:** 924 925 ```js 926 downloadTask.resume((err, result)=>{ 927 if (err) { 928 console.error('Failed to resume the download task. Cause:' + err); 929 return; 930 } 931 if (result) { 932 console.info('Download task resumed.'); 933 } else { 934 console.error('Failed to resume the download task.'); 935 } 936 }); 937 ``` 938 939 940## DownloadConfig 941 942**系统能力**: SystemCapability.MiscServices.Download 943 944| 名称 | 类型 | 必填 | 说明 | 945| -------- | -------- | -------- | -------- | 946| url | string | 是 | 资源地址。 | 947| header | object | 否 | 添加要包含在下载请求中的HTTP或HTTPS标志头。 | 948| enableMetered | boolean | 否 | 允许在按流量计费的连接下下载。 | 949| enableRoaming | boolean | 否 | 允许在漫游网络中下载。 | 950| description | string | 否 | 设置下载会话的描述。 | 951| filePath<sup>7+</sup> | string | 否 | 设置下载路径(默认在'internal://cache/'路径下)。<br/>- filePath:'workspace/test.txt':默认路径下创建workspace路径,并将文件存储在workspace路径下。<br/>- filePath:'test.txt':将文件存储在默认路径下。<br/>- filePath:'workspace/':默认路径下创建workspace路径,并将文件存储在workspace路径下。 | 952| networkType | number | 否 | 设置允许下载的网络类型。 | 953| title | string | 否 | 设置下载会话标题。 | 954 955 956## DownloadInfo<sup>7+</sup> 957 958**系统能力**: SystemCapability.MiscServices.Download 959 960| 名称 | 类型 | 必填 | 说明 | 961| -------- | -------- | -------- | -------- | 962| downloadId | number | 是 | 下载的文件ID。 | 963| failedReason | number | 否 | 下载失败原因,可以是任何[ERROR_*](#常量)常量。 | 964| fileName | string | 是 | 下载的文件名。 | 965| filePath | string | 是 | 存储文件的URI。 | 966| pausedReason | number | 否 | 会话暂停的原因,可以是任何[PAUSED_*](#常量)常量。 | 967| status | number | 是 | 下载状态代码,可以是任何[SESSION_*](#常量)常量。 | 968| targetURI | string | 是 | 下载文件的URI。 | 969| downloadTitle | string | 是 | 下载的文件的标题。 | 970| downloadTotalBytes | number | 是 | 下载的文件的总大小(int bytes)。 | 971| description | string | 是 | 待下载文件的描述信息。 | 972| downloadedBytes | number | 是 | 实时下载大小(int bytes)。 | 973