1# Class (WebDownloadItem) 2<!--Kit: ArkWeb--> 3<!--Subsystem: Web--> 4<!--Owner: @aohui--> 5<!--Designer: @yaomingliu--> 6<!--Tester: @ghiker--> 7<!--Adviser: @HelloCrease--> 8 9 表示下载任务,您可以使用此对象来操作相应的下载任务。 10 11> **说明:** 12> 13> - 本模块首批接口从API version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 14> 15> - 本Class首批接口从API version 11开始支持。 16> 17> - 示例效果请以真机运行为准,当前DevEco Studio预览器不支持。 18> 19> - 在下载过程中,下载的进程会通过WebDownloadDelegate通知给使用者,使用者可以通过参数WebDownloadItem来操作下载任务。 20> 21> - 当前WebDownloadItem支持的下载文件名最长长度为255字节<!--RP--><!--RPEnd-->。 22 23## 导入模块 24 25```ts 26import { webview } from '@kit.ArkWeb'; 27``` 28 29## getGuid<sup>11+</sup> 30 31getGuid(): string 32 33获取下载任务的唯一ID。 34 35**系统能力:** SystemCapability.Web.Webview.Core 36 37**返回值:** 38 39| 类型 | 说明 | 40| ------ | ------------------------- | 41| string | 下载任务的唯一ID。 | 42 43**示例:** 44 45```ts 46// xxx.ets 47import { webview } from '@kit.ArkWeb'; 48import { BusinessError } from '@kit.BasicServicesKit'; 49 50@Entry 51@Component 52struct WebComponent { 53 controller: webview.WebviewController = new webview.WebviewController(); 54 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 55 56 build() { 57 Column() { 58 Button('setDownloadDelegate') 59 .onClick(() => { 60 try { 61 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 62 console.info("will start a download."); 63 // 传入一个下载路径,并开始下载。 64 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 65 }) 66 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 67 console.info("download update guid: " + webDownloadItem.getGuid()); 68 }) 69 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 70 console.info("download failed guid: " + webDownloadItem.getGuid()); 71 }) 72 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 73 console.info("download finish guid: " + webDownloadItem.getGuid()); 74 }) 75 this.controller.setDownloadDelegate(this.delegate); 76 } catch (error) { 77 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 78 } 79 }) 80 Button('startDownload') 81 .onClick(() => { 82 try { 83 this.controller.startDownload('https://www.example.com'); 84 } catch (error) { 85 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 86 } 87 }) 88 Web({ src: 'www.example.com', controller: this.controller }) 89 } 90 } 91} 92``` 93 94## getCurrentSpeed<sup>11+</sup> 95 96getCurrentSpeed(): number 97 98获取下载的速度,单位:字节每秒。 99 100**系统能力:** SystemCapability.Web.Webview.Core 101 102**返回值:** 103 104| 类型 | 说明 | 105| ------ | ------------------------- | 106| number | 下载的速度(字节每秒)。 | 107 108**示例:** 109 110```ts 111// xxx.ets 112import { webview } from '@kit.ArkWeb'; 113import { BusinessError } from '@kit.BasicServicesKit'; 114 115@Entry 116@Component 117struct WebComponent { 118 controller: webview.WebviewController = new webview.WebviewController(); 119 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 120 121 build() { 122 Column() { 123 Button('setDownloadDelegate') 124 .onClick(() => { 125 try { 126 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 127 console.info("will start a download."); 128 // 传入一个下载路径,并开始下载。 129 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 130 }) 131 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 132 console.info("download update current speed: " + webDownloadItem.getCurrentSpeed()); 133 }) 134 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 135 console.info("download failed guid: " + webDownloadItem.getGuid()); 136 }) 137 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 138 console.info("download finish guid: " + webDownloadItem.getGuid()); 139 }) 140 this.controller.setDownloadDelegate(this.delegate); 141 } catch (error) { 142 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 143 } 144 }) 145 Button('startDownload') 146 .onClick(() => { 147 try { 148 this.controller.startDownload('https://www.example.com'); 149 } catch (error) { 150 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 151 } 152 }) 153 Web({ src: 'www.example.com', controller: this.controller }) 154 } 155 } 156} 157``` 158 159## getPercentComplete<sup>11+</sup> 160 161getPercentComplete(): number 162 163获取下载的进度,100代表下载完成。 164 165**系统能力:** SystemCapability.Web.Webview.Core 166 167**返回值:** 168 169| 类型 | 说明 | 170| ------ | ------------------------- | 171| number | 下载完成的进度,100代表下载完成,-1代表进度未知。 | 172 173**示例:** 174 175```ts 176// xxx.ets 177import { webview } from '@kit.ArkWeb'; 178import { BusinessError } from '@kit.BasicServicesKit'; 179 180@Entry 181@Component 182struct WebComponent { 183 controller: webview.WebviewController = new webview.WebviewController(); 184 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 185 186 build() { 187 Column() { 188 Button('setDownloadDelegate') 189 .onClick(() => { 190 try { 191 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 192 console.info("will start a download."); 193 // 传入一个下载路径,并开始下载。 194 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 195 }) 196 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 197 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 198 }) 199 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 200 console.info("download failed guid: " + webDownloadItem.getGuid()); 201 }) 202 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 203 console.info("download finish guid: " + webDownloadItem.getGuid()); 204 }) 205 this.controller.setDownloadDelegate(this.delegate); 206 } catch (error) { 207 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 208 } 209 }) 210 Button('startDownload') 211 .onClick(() => { 212 try { 213 this.controller.startDownload('https://www.example.com'); 214 } catch (error) { 215 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 216 } 217 }) 218 Web({ src: 'www.example.com', controller: this.controller }) 219 } 220 } 221} 222``` 223 224## getTotalBytes<sup>11+</sup> 225 226getTotalBytes(): number 227 228获取待下载文件的总长度。 229 230**系统能力:** SystemCapability.Web.Webview.Core 231 232**返回值:** 233 234| 类型 | 说明 | 235| ------ | ------------------------- | 236| number | 待下载文件的总长度,-1代表总大小未知。 | 237 238**示例:** 239 240```ts 241// xxx.ets 242import { webview } from '@kit.ArkWeb'; 243import { BusinessError } from '@kit.BasicServicesKit'; 244 245@Entry 246@Component 247struct WebComponent { 248 controller: webview.WebviewController = new webview.WebviewController(); 249 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 250 251 build() { 252 Column() { 253 Button('setDownloadDelegate') 254 .onClick(() => { 255 try { 256 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 257 console.info("will start a download."); 258 // 传入一个下载路径,并开始下载。 259 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 260 }) 261 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 262 console.info("download update total bytes: " + webDownloadItem.getTotalBytes()); 263 }) 264 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 265 console.info("download failed guid: " + webDownloadItem.getGuid()); 266 }) 267 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 268 console.info("download finish guid: " + webDownloadItem.getGuid()); 269 }) 270 this.controller.setDownloadDelegate(this.delegate); 271 } catch (error) { 272 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 273 } 274 }) 275 Button('startDownload') 276 .onClick(() => { 277 try { 278 this.controller.startDownload('https://www.example.com'); 279 } catch (error) { 280 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 281 } 282 }) 283 Web({ src: 'www.example.com', controller: this.controller }) 284 } 285 } 286} 287``` 288 289## getState<sup>11+</sup> 290 291getState(): WebDownloadState 292 293获取下载的状态。 294 295**系统能力:** SystemCapability.Web.Webview.Core 296 297**返回值:** 298 299| 类型 | 说明 | 300| ------ | ------------------------- | 301| [WebDownloadState](./arkts-apis-webview-e.md#webdownloadstate11) | 下载的状态。 | 302 303**示例:** 304 305```ts 306// xxx.ets 307import { webview } from '@kit.ArkWeb'; 308import { BusinessError } from '@kit.BasicServicesKit'; 309 310@Entry 311@Component 312struct WebComponent { 313 controller: webview.WebviewController = new webview.WebviewController(); 314 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 315 316 build() { 317 Column() { 318 Button('setDownloadDelegate') 319 .onClick(() => { 320 try { 321 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 322 console.info("will start a download."); 323 // 传入一个下载路径,并开始下载。 324 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 325 }) 326 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 327 console.info("download update download state: " + webDownloadItem.getState()); 328 }) 329 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 330 console.info("download failed guid: " + webDownloadItem.getGuid()); 331 }) 332 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 333 console.info("download finish guid: " + webDownloadItem.getGuid()); 334 }) 335 this.controller.setDownloadDelegate(this.delegate); 336 } catch (error) { 337 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 338 } 339 }) 340 Button('startDownload') 341 .onClick(() => { 342 try { 343 this.controller.startDownload('https://www.example.com'); 344 } catch (error) { 345 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 346 } 347 }) 348 Web({ src: 'www.example.com', controller: this.controller }) 349 } 350 } 351} 352``` 353 354## getLastErrorCode<sup>11+</sup> 355 356getLastErrorCode(): WebDownloadErrorCode 357 358获取下载的错误码。 359 360**系统能力:** SystemCapability.Web.Webview.Core 361 362**返回值:** 363 364| 类型 | 说明 | 365| ------ | ------------------------- | 366| [WebDownloadErrorCode](./arkts-apis-webview-e.md#webdownloaderrorcode11) | 下载发生错误的时候的错误码。 | 367 368**示例:** 369 370```ts 371// xxx.ets 372import { webview } from '@kit.ArkWeb'; 373import { BusinessError } from '@kit.BasicServicesKit'; 374 375@Entry 376@Component 377struct WebComponent { 378 controller: webview.WebviewController = new webview.WebviewController(); 379 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 380 381 build() { 382 Column() { 383 Button('setDownloadDelegate') 384 .onClick(() => { 385 try { 386 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 387 console.info("will start a download."); 388 // 传入一个下载路径,并开始下载。 389 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 390 }) 391 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 392 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 393 }) 394 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 395 console.info("download failed guid: " + webDownloadItem.getGuid()); 396 console.info("download error code: " + webDownloadItem.getLastErrorCode()); 397 }) 398 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 399 console.info("download finish guid: " + webDownloadItem.getGuid()); 400 }) 401 this.controller.setDownloadDelegate(this.delegate); 402 } catch (error) { 403 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 404 } 405 }) 406 Button('startDownload') 407 .onClick(() => { 408 try { 409 this.controller.startDownload('https://www.example.com'); 410 } catch (error) { 411 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 412 } 413 }) 414 Web({ src: 'www.example.com', controller: this.controller }) 415 } 416 } 417} 418``` 419 420## getMethod<sup>11+</sup> 421 422getMethod(): string 423 424获取下载任务的请求方式。 425 426**系统能力:** SystemCapability.Web.Webview.Core 427 428**返回值:** 429 430| 类型 | 说明 | 431| ------ | ------------------------- | 432| string | 下载的请求方式。 | 433 434**示例:** 435 436```ts 437// xxx.ets 438import { webview } from '@kit.ArkWeb'; 439import { BusinessError } from '@kit.BasicServicesKit'; 440 441@Entry 442@Component 443struct WebComponent { 444 controller: webview.WebviewController = new webview.WebviewController(); 445 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 446 447 build() { 448 Column() { 449 Button('setDownloadDelegate') 450 .onClick(() => { 451 try { 452 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 453 console.info("will start a download, method:" + webDownloadItem.getMethod()); 454 // 传入一个下载路径,并开始下载。 455 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 456 }) 457 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 458 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 459 }) 460 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 461 console.info("download failed guid: " + webDownloadItem.getGuid()); 462 }) 463 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 464 console.info("download finish guid: " + webDownloadItem.getGuid()); 465 }) 466 this.controller.setDownloadDelegate(this.delegate); 467 } catch (error) { 468 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 469 } 470 }) 471 Button('startDownload') 472 .onClick(() => { 473 try { 474 this.controller.startDownload('https://www.example.com'); 475 } catch (error) { 476 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 477 } 478 }) 479 Web({ src: 'www.example.com', controller: this.controller }) 480 } 481 } 482} 483``` 484 485## getMimeType<sup>11+</sup> 486 487getMimeType(): string 488 489获取下载的媒体类型(例如,一个声音文件可能被标记为 audio/ogg ,一个图像文件可能是 image/png)。 490 491**系统能力:** SystemCapability.Web.Webview.Core 492 493**返回值:** 494 495| 类型 | 说明 | 496| ------ | ------------------------- | 497| string | 下载的媒体类型(例如,一个声音文件可能被标记为 audio/ogg ,一个图像文件可能是 image/png)。| 498 499**示例:** 500 501```ts 502// xxx.ets 503import { webview } from '@kit.ArkWeb'; 504import { BusinessError } from '@kit.BasicServicesKit'; 505 506@Entry 507@Component 508struct WebComponent { 509 controller: webview.WebviewController = new webview.WebviewController(); 510 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 511 512 build() { 513 Column() { 514 Button('setDownloadDelegate') 515 .onClick(() => { 516 try { 517 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 518 console.info("will start a download, mime type:" + webDownloadItem.getMimeType()); 519 // 传入一个下载路径,并开始下载。 520 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 521 }) 522 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 523 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 524 }) 525 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 526 console.info("download failed guid: " + webDownloadItem.getGuid()); 527 }) 528 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 529 console.info("download finish guid: " + webDownloadItem.getGuid()); 530 }) 531 this.controller.setDownloadDelegate(this.delegate); 532 } catch (error) { 533 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 534 } 535 }) 536 Button('startDownload') 537 .onClick(() => { 538 try { 539 this.controller.startDownload('https://www.example.com'); 540 } catch (error) { 541 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 542 } 543 }) 544 Web({ src: 'www.example.com', controller: this.controller }) 545 } 546 } 547} 548``` 549 550## getUrl<sup>11+</sup> 551 552getUrl(): string 553 554获取下载的请求地址。 555 556**系统能力:** SystemCapability.Web.Webview.Core 557 558**返回值:** 559 560| 类型 | 说明 | 561| ------ | ------------------------- | 562| string | 下载的请求地址。 | 563 564**示例:** 565 566```ts 567// xxx.ets 568import { webview } from '@kit.ArkWeb'; 569import { BusinessError } from '@kit.BasicServicesKit'; 570 571@Entry 572@Component 573struct WebComponent { 574 controller: webview.WebviewController = new webview.WebviewController(); 575 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 576 577 build() { 578 Column() { 579 Button('setDownloadDelegate') 580 .onClick(() => { 581 try { 582 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 583 console.info("will start a download, url:" + webDownloadItem.getUrl()); 584 // 传入一个下载路径,并开始下载。 585 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 586 }) 587 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 588 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 589 }) 590 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 591 console.info("download failed guid: " + webDownloadItem.getGuid()); 592 }) 593 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 594 console.info("download finish guid: " + webDownloadItem.getGuid()); 595 }) 596 this.controller.setDownloadDelegate(this.delegate); 597 } catch (error) { 598 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 599 } 600 }) 601 Button('startDownload') 602 .onClick(() => { 603 try { 604 this.controller.startDownload('https://www.example.com'); 605 } catch (error) { 606 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 607 } 608 }) 609 Web({ src: 'www.example.com', controller: this.controller }) 610 } 611 } 612} 613``` 614 615## getSuggestedFileName<sup>11+</sup> 616 617getSuggestedFileName(): string 618 619获取下载的建议文件名。 620 621**系统能力:** SystemCapability.Web.Webview.Core 622 623**返回值:** 624 625| 类型 | 说明 | 626| ------ | ------------------------- | 627| string | 下载的建议文件名。 | 628 629**示例:** 630 631```ts 632// xxx.ets 633import { webview } from '@kit.ArkWeb'; 634import { BusinessError } from '@kit.BasicServicesKit'; 635 636@Entry 637@Component 638struct WebComponent { 639 controller: webview.WebviewController = new webview.WebviewController(); 640 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 641 642 build() { 643 Column() { 644 Button('setDownloadDelegate') 645 .onClick(() => { 646 try { 647 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 648 console.info("will start a download, suggest name:" + webDownloadItem.getSuggestedFileName()); 649 // 传入一个下载路径,并开始下载。 650 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 651 }) 652 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 653 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 654 }) 655 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 656 console.info("download failed guid: " + webDownloadItem.getGuid()); 657 }) 658 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 659 console.info("download finish guid: " + webDownloadItem.getGuid()); 660 }) 661 this.controller.setDownloadDelegate(this.delegate); 662 } catch (error) { 663 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 664 } 665 }) 666 Button('startDownload') 667 .onClick(() => { 668 try { 669 this.controller.startDownload('https://www.example.com'); 670 } catch (error) { 671 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 672 } 673 }) 674 Web({ src: 'www.example.com', controller: this.controller }) 675 } 676 } 677} 678``` 679 680## getReceivedBytes<sup>11+</sup> 681 682getReceivedBytes(): number 683 684获取已经接收的字节数。 685 686**系统能力:** SystemCapability.Web.Webview.Core 687 688**返回值:** 689 690| 类型 | 说明 | 691| ------ | ------------------------- | 692| number | 已经接收的字节数。 | 693 694**示例:** 695 696```ts 697// xxx.ets 698import { webview } from '@kit.ArkWeb'; 699import { BusinessError } from '@kit.BasicServicesKit'; 700 701@Entry 702@Component 703struct WebComponent { 704 controller: webview.WebviewController = new webview.WebviewController(); 705 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 706 707 build() { 708 Column() { 709 Button('setDownloadDelegate') 710 .onClick(() => { 711 try { 712 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 713 console.info("will start a download."); 714 // 传入一个下载路径,并开始下载。 715 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 716 }) 717 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 718 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 719 console.info("download update received bytes: " + webDownloadItem.getReceivedBytes()); 720 }) 721 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 722 console.info("download failed guid: " + webDownloadItem.getGuid()); 723 }) 724 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 725 console.info("download finish guid: " + webDownloadItem.getGuid()); 726 }) 727 this.controller.setDownloadDelegate(this.delegate); 728 } catch (error) { 729 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 730 } 731 }) 732 Button('startDownload') 733 .onClick(() => { 734 try { 735 this.controller.startDownload('https://www.example.com'); 736 } catch (error) { 737 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 738 } 739 }) 740 Web({ src: 'www.example.com', controller: this.controller }) 741 } 742 } 743} 744``` 745 746## getFullPath<sup>11+</sup> 747 748getFullPath(): string 749 750获取下载文件在磁盘上的全路径。 751 752**系统能力:** SystemCapability.Web.Webview.Core 753 754**返回值:** 755 756| 类型 | 说明 | 757| ------ | ------------------------- | 758| string | 下载文件在磁盘上的全路径。 | 759 760**示例:** 761 762```ts 763// xxx.ets 764import { webview } from '@kit.ArkWeb'; 765import { BusinessError } from '@kit.BasicServicesKit'; 766 767@Entry 768@Component 769struct WebComponent { 770 controller: webview.WebviewController = new webview.WebviewController(); 771 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 772 773 build() { 774 Column() { 775 Button('setDownloadDelegate') 776 .onClick(() => { 777 try { 778 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 779 console.info("will start a download."); 780 // 传入一个下载路径,并开始下载。 781 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 782 }) 783 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 784 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 785 }) 786 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 787 console.info("download failed guid: " + webDownloadItem.getGuid()); 788 }) 789 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 790 console.info("download finish guid: " + webDownloadItem.getGuid()); 791 console.info("download finish full path: " + webDownloadItem.getFullPath()); 792 }) 793 this.controller.setDownloadDelegate(this.delegate); 794 } catch (error) { 795 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 796 } 797 }) 798 Button('startDownload') 799 .onClick(() => { 800 try { 801 this.controller.startDownload('https://www.example.com'); 802 } catch (error) { 803 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 804 } 805 }) 806 Web({ src: 'www.example.com', controller: this.controller }) 807 } 808 } 809} 810``` 811 812## serialize<sup>11+</sup> 813 814serialize(): Uint8Array 815 816将失败的下载序列化到一个字节数组。 817 818**系统能力:** SystemCapability.Web.Webview.Core 819 820**返回值:** 821 822| 类型 | 说明 | 823| ------ | ------------------------- | 824| Uint8Array | 失败的下载序列化后的字节数组。 | 825 826**示例:** 827 828```ts 829// xxx.ets 830import { webview } from '@kit.ArkWeb'; 831import { BusinessError } from '@kit.BasicServicesKit'; 832 833@Entry 834@Component 835struct WebComponent { 836 controller: webview.WebviewController = new webview.WebviewController(); 837 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 838 failedData: Uint8Array = new Uint8Array(); 839 840 build() { 841 Column() { 842 Button('setDownloadDelegate') 843 .onClick(() => { 844 try { 845 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 846 console.info("will start a download."); 847 // 传入一个下载路径,并开始下载。 848 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 849 }) 850 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 851 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 852 }) 853 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 854 console.info("download failed guid: " + webDownloadItem.getGuid()); 855 // 序列化失败的下载到一个字节数组。 856 this.failedData = webDownloadItem.serialize(); 857 }) 858 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 859 console.info("download finish guid: " + webDownloadItem.getGuid()); 860 }) 861 this.controller.setDownloadDelegate(this.delegate); 862 } catch (error) { 863 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 864 } 865 }) 866 Button('startDownload') 867 .onClick(() => { 868 try { 869 this.controller.startDownload('https://www.example.com'); 870 } catch (error) { 871 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 872 } 873 }) 874 Web({ src: 'www.example.com', controller: this.controller }) 875 } 876 } 877} 878``` 879 880## deserialize<sup>11+</sup> 881 882static deserialize(serializedData: Uint8Array): WebDownloadItem 883 884将序列化后的字节数组反序列化为一个WebDownloadItem对象。 885 886**系统能力:** SystemCapability.Web.Webview.Core 887 888**参数:** 889 890| 参数名 | 类型 | 必填 | 说明 | 891| ------------------ | ------- | ---- | ------------- | 892| serializedData | Uint8Array | 是 | 序列化后的下载。| 893 894**返回值:** 895 896| 类型 | 说明 | 897| ------ | ------------------------- | 898| WebDownloadItem | 从字节数组反序列化为一个WebDownloadItem对象。 | 899 900**错误码:** 901 902以下错误码的详细介绍请参见[webview错误码](errorcode-webview.md)。 903 904| 错误码ID | 错误信息 | 905| -------- | ------------------------------------------------------------ | 906| 401 | Parameter error. Possible causes: 1. Incorrect parameter types. 2. Parameter verification failed. | 907 908**示例:** 909 910```ts 911// xxx.ets 912import { webview } from '@kit.ArkWeb'; 913import { BusinessError } from '@kit.BasicServicesKit'; 914 915@Entry 916@Component 917struct WebComponent { 918 controller: webview.WebviewController = new webview.WebviewController(); 919 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 920 failedData: Uint8Array = new Uint8Array(); 921 922 build() { 923 Column() { 924 Button('setDownloadDelegate') 925 .onClick(() => { 926 try { 927 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 928 console.info("will start a download."); 929 // 传入一个下载路径,并开始下载。 930 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 931 }) 932 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 933 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 934 }) 935 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 936 console.info("download failed guid: " + webDownloadItem.getGuid()); 937 // 序列化失败的下载到一个字节数组。 938 this.failedData = webDownloadItem.serialize(); 939 }) 940 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 941 console.info("download finish guid: " + webDownloadItem.getGuid()); 942 }) 943 this.controller.setDownloadDelegate(this.delegate); 944 } catch (error) { 945 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 946 } 947 }) 948 Button('startDownload') 949 .onClick(() => { 950 try { 951 this.controller.startDownload('https://www.example.com'); 952 } catch (error) { 953 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 954 } 955 }) 956 Button('resumeDownload') 957 .onClick(() => { 958 try { 959 webview.WebDownloadManager.resumeDownload(webview.WebDownloadItem.deserialize(this.failedData)); 960 } catch (error) { 961 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 962 } 963 }) 964 Web({ src: 'www.example.com', controller: this.controller }) 965 } 966 } 967} 968``` 969 970## start<sup>11+</sup> 971 972start(downloadPath: string): void 973 974开始下载到指定目录,参数为下载文件的磁盘存储路径(包含文件名)。 975 976> **说明:** 977> 978>该接口应在WebDownloadDelegate的onBeforeDownload回调中使用。若在WebDownloadDelegate的onBeforeDownload中未调用start('xxx'),则下载任务将保持在PENDING状态。处于PENDING状态的下载会将文件下载到临时目录,临时文件会在WebDownloadItem.start指定目标路径后被重命名为目标路径,未下载完成的部分会在WebDownloadItem.start指定目标路径后直接下载到目标路径。如果在调用WebDownloadItem.start之前不希望下载到临时文件路径,可以先通过WebDownloadItem.cancel取消当前下载任务,随后通过WebDownloadManager.resumeDownload恢复被取消的下载任务。 979 980**系统能力:** SystemCapability.Web.Webview.Core 981 982**参数:** 983 984| 参数名 | 类型 | 必填 | 说明 | 985| ------ | ---------------------- | ---- | ------------------------------| 986| downloadPath | string | 是 | 下载文件的路径(包含文件名),路径长度与文件管理中长度一致,最长255字符。 | 987 988**错误码:** 989 990以下错误码的详细介绍请参见[webview错误码](errorcode-webview.md)。 991 992| 错误码ID | 错误信息 | 993| -------- | ------------------------------------------------------------ | 994| 401 | Parameter error. Possible causes: 1. Incorrect parameter types. 2. Parameter verification failed. | 995 996**示例:** 997 998```ts 999// xxx.ets 1000import { webview } from '@kit.ArkWeb'; 1001import { BusinessError } from '@kit.BasicServicesKit'; 1002 1003@Entry 1004@Component 1005struct WebComponent { 1006 controller: webview.WebviewController = new webview.WebviewController(); 1007 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 1008 failedData: Uint8Array = new Uint8Array(); 1009 1010 build() { 1011 Column() { 1012 Button('setDownloadDelegate') 1013 .onClick(() => { 1014 try { 1015 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 1016 console.info("will start a download."); 1017 // 传入一个下载路径,并开始下载。 1018 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 1019 }) 1020 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 1021 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 1022 }) 1023 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 1024 console.info("download failed guid: " + webDownloadItem.getGuid()); 1025 // 序列化失败的下载到一个字节数组。 1026 this.failedData = webDownloadItem.serialize(); 1027 }) 1028 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 1029 console.info("download finish guid: " + webDownloadItem.getGuid()); 1030 }) 1031 this.controller.setDownloadDelegate(this.delegate); 1032 } catch (error) { 1033 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1034 } 1035 }) 1036 Button('startDownload') 1037 .onClick(() => { 1038 try { 1039 this.controller.startDownload('https://www.example.com'); 1040 } catch (error) { 1041 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1042 } 1043 }) 1044 Button('resumeDownload') 1045 .onClick(() => { 1046 try { 1047 webview.WebDownloadManager.resumeDownload(webview.WebDownloadItem.deserialize(this.failedData)); 1048 } catch (error) { 1049 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1050 } 1051 }) 1052 Web({ src: 'www.example.com', controller: this.controller }) 1053 } 1054 } 1055} 1056``` 1057 1058## cancel<sup>11+</sup> 1059 1060cancel(): void 1061 1062取消一个正在下载的下载任务。 1063 1064**系统能力:** SystemCapability.Web.Webview.Core 1065 1066**示例:** 1067 1068```ts 1069// xxx.ets 1070import { webview } from '@kit.ArkWeb'; 1071import { BusinessError } from '@kit.BasicServicesKit'; 1072 1073@Entry 1074@Component 1075struct WebComponent { 1076 controller: webview.WebviewController = new webview.WebviewController(); 1077 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 1078 download: webview.WebDownloadItem = new webview.WebDownloadItem(); 1079 failedData: Uint8Array = new Uint8Array(); 1080 1081 build() { 1082 Column() { 1083 Button('setDownloadDelegate') 1084 .onClick(() => { 1085 try { 1086 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 1087 console.info("will start a download."); 1088 // 传入一个下载路径,并开始下载。 1089 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 1090 }) 1091 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 1092 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 1093 this.download = webDownloadItem; 1094 }) 1095 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 1096 console.info("download failed guid: " + webDownloadItem.getGuid()); 1097 // 序列化失败的下载到一个字节数组。 1098 this.failedData = webDownloadItem.serialize(); 1099 }) 1100 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 1101 console.info("download finish guid: " + webDownloadItem.getGuid()); 1102 }) 1103 this.controller.setDownloadDelegate(this.delegate); 1104 } catch (error) { 1105 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1106 } 1107 }) 1108 Button('startDownload') 1109 .onClick(() => { 1110 try { 1111 this.controller.startDownload('https://www.example.com'); 1112 } catch (error) { 1113 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1114 } 1115 }) 1116 Button('resumeDownload') 1117 .onClick(() => { 1118 try { 1119 webview.WebDownloadManager.resumeDownload(webview.WebDownloadItem.deserialize(this.failedData)); 1120 } catch (error) { 1121 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1122 } 1123 }) 1124 Button('cancel') 1125 .onClick(() => { 1126 try { 1127 this.download.cancel(); 1128 } catch (error) { 1129 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1130 } 1131 }) 1132 Web({ src: 'www.example.com', controller: this.controller }) 1133 } 1134 } 1135} 1136``` 1137 1138## pause<sup>11+</sup> 1139 1140pause(): void 1141 1142暂停一个正在下载的下载任务。 1143 1144**系统能力:** SystemCapability.Web.Webview.Core 1145 1146**错误码:** 1147 1148以下错误码的详细介绍请参见[webview错误码](errorcode-webview.md)。 1149 1150| 错误码ID | 错误信息 | 1151| -------- | ------------------------------------------------------------ | 1152| 17100019 | The download task is not started yet. | 1153 1154**示例:** 1155 1156```ts 1157// xxx.ets 1158import { webview } from '@kit.ArkWeb'; 1159import { BusinessError } from '@kit.BasicServicesKit'; 1160 1161@Entry 1162@Component 1163struct WebComponent { 1164 controller: webview.WebviewController = new webview.WebviewController(); 1165 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 1166 download: webview.WebDownloadItem = new webview.WebDownloadItem(); 1167 failedData: Uint8Array = new Uint8Array(); 1168 1169 build() { 1170 Column() { 1171 Button('setDownloadDelegate') 1172 .onClick(() => { 1173 try { 1174 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 1175 console.info("will start a download."); 1176 // 传入一个下载路径,并开始下载。 1177 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 1178 }) 1179 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 1180 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 1181 this.download = webDownloadItem; 1182 }) 1183 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 1184 console.info("download failed guid: " + webDownloadItem.getGuid()); 1185 // 序列化失败的下载到一个字节数组。 1186 this.failedData = webDownloadItem.serialize(); 1187 }) 1188 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 1189 console.info("download finish guid: " + webDownloadItem.getGuid()); 1190 }) 1191 this.controller.setDownloadDelegate(this.delegate); 1192 } catch (error) { 1193 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1194 } 1195 }) 1196 Button('startDownload') 1197 .onClick(() => { 1198 try { 1199 this.controller.startDownload('https://www.example.com'); 1200 } catch (error) { 1201 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1202 } 1203 }) 1204 Button('resumeDownload') 1205 .onClick(() => { 1206 try { 1207 webview.WebDownloadManager.resumeDownload(webview.WebDownloadItem.deserialize(this.failedData)); 1208 } catch (error) { 1209 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1210 } 1211 }) 1212 Button('cancel') 1213 .onClick(() => { 1214 try { 1215 this.download.cancel(); 1216 } catch (error) { 1217 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1218 } 1219 }) 1220 Button('pause') 1221 .onClick(() => { 1222 try { 1223 this.download.pause(); 1224 } catch (error) { 1225 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1226 } 1227 }) 1228 Web({ src: 'www.example.com', controller: this.controller }) 1229 } 1230 } 1231} 1232``` 1233 1234## resume<sup>11+</sup> 1235 1236resume(): void 1237 1238恢复一个暂停的下载任务。 1239 1240**系统能力:** SystemCapability.Web.Webview.Core 1241 1242**错误码:** 1243 1244以下错误码的详细介绍请参见[webview错误码](errorcode-webview.md)。 1245 1246| 错误码ID | 错误信息 | 1247| -------- | ------------------------------------------------------------ | 1248| 17100016 | The download task is not paused. | 1249 1250**示例:** 1251 1252```ts 1253// xxx.ets 1254import { webview } from '@kit.ArkWeb'; 1255import { BusinessError } from '@kit.BasicServicesKit'; 1256 1257@Entry 1258@Component 1259struct WebComponent { 1260 controller: webview.WebviewController = new webview.WebviewController(); 1261 delegate: webview.WebDownloadDelegate = new webview.WebDownloadDelegate(); 1262 download: webview.WebDownloadItem = new webview.WebDownloadItem(); 1263 failedData: Uint8Array = new Uint8Array(); 1264 1265 build() { 1266 Column() { 1267 Button('setDownloadDelegate') 1268 .onClick(() => { 1269 try { 1270 this.delegate.onBeforeDownload((webDownloadItem: webview.WebDownloadItem) => { 1271 console.info("will start a download."); 1272 // 传入一个下载路径,并开始下载。 1273 webDownloadItem.start("/data/storage/el2/base/cache/web/" + webDownloadItem.getSuggestedFileName()); 1274 }) 1275 this.delegate.onDownloadUpdated((webDownloadItem: webview.WebDownloadItem) => { 1276 console.info("download update percent complete: " + webDownloadItem.getPercentComplete()); 1277 this.download = webDownloadItem; 1278 }) 1279 this.delegate.onDownloadFailed((webDownloadItem: webview.WebDownloadItem) => { 1280 console.info("download failed guid: " + webDownloadItem.getGuid()); 1281 // 序列化失败的下载到一个字节数组。 1282 this.failedData = webDownloadItem.serialize(); 1283 }) 1284 this.delegate.onDownloadFinish((webDownloadItem: webview.WebDownloadItem) => { 1285 console.info("download finish guid: " + webDownloadItem.getGuid()); 1286 }) 1287 this.controller.setDownloadDelegate(this.delegate); 1288 } catch (error) { 1289 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1290 } 1291 }) 1292 Button('startDownload') 1293 .onClick(() => { 1294 try { 1295 this.controller.startDownload('https://www.example.com'); 1296 } catch (error) { 1297 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1298 } 1299 }) 1300 Button('resumeDownload') 1301 .onClick(() => { 1302 try { 1303 webview.WebDownloadManager.resumeDownload(webview.WebDownloadItem.deserialize(this.failedData)); 1304 } catch (error) { 1305 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1306 } 1307 }) 1308 Button('cancel') 1309 .onClick(() => { 1310 try { 1311 this.download.cancel(); 1312 } catch (error) { 1313 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1314 } 1315 }) 1316 Button('pause') 1317 .onClick(() => { 1318 try { 1319 this.download.pause(); 1320 } catch (error) { 1321 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1322 } 1323 }) 1324 Button('resume') 1325 .onClick(() => { 1326 try { 1327 this.download.resume(); 1328 } catch (error) { 1329 console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); 1330 } 1331 }) 1332 Web({ src: 'www.example.com', controller: this.controller }) 1333 } 1334 } 1335} 1336```