• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 上传下载
2
3
4> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
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.Download37
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&lt;UploadTask&gt;
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&lt;[UploadTask](#uploadtask)&gt; | 返回上传任务。 |
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&lt;UploadTask&gt;): 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&lt;[UploadTask](#uploadtask)&gt; | 否 | 回调函数,异步返回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) =&gt; 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) =&gt; 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&nbsp;Response&nbsp;Header事件的回调函数。 |
188
189  回调函数的参数:
190
191| 参数名 | 类型 | 必填 | 说明 |
192| -------- | -------- | -------- | -------- |
193| header | object | 是 | HTTP&nbsp;Response&nbsp;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) =&gt;  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) =&gt; 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&nbsp;Response&nbsp;Header事件的回调函数。 |
255
256  回调函数的参数:
257
258| 参数名 | 类型 | 必填 | 说明 |
259| -------- | -------- | -------- | -------- |
260| header | object | 是 | HTTP&nbsp;Response&nbsp;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&lt;boolean&gt;
275
276移除上传的任务,异步方法,使用promise形式返回结果。
277
278**需要权限**:ohos.permission.INTERNET
279
280**系统能力**: SystemCapability.MiscServices.Upload
281
282**返回值:**
283
284  | 类型 | 说明 |
285  | -------- | -------- |
286  | Promise&lt;boolean&gt; | 移除任务是否成功。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&lt;boolean&gt;): void
306
307移除上传的任务,异步方法,使用callback形式返回结果。
308
309**需要权限**:ohos.permission.INTERNET
310
311**系统能力**: SystemCapability.MiscServices.Upload
312
313**参数:**
314
315  | 参数名 | 参数类型 | 必填 | 说明 |
316  | -------- | -------- | -------- | -------- |
317  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务的回调函数。 |
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.Upload339
340| 名称 | 类型 | 必填 | 说明 |
341| -------- | -------- | -------- | -------- |
342| url | string | 是 | 资源地址。 |
343| header | object | 是 | 添加要包含在上载请求中的HTTP或HTTPS标志头。 |
344| method | string | 是 | 请求方法:POST、PUT。缺省为POST。 |
345| files | Array&lt;[File](#file)&gt; | 是 | 要上传的文件列表。请使用&nbsp;multipart/form-data提交。 |
346| data | Array&lt;[RequestData](#requestdata)&gt; | 是 | 请求的表单数据。 |
347
348
349## File
350
351**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Upload352
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.Upload364
365| 名称 | 类型 | 必填 | 说明 |
366| -------- | -------- | -------- | -------- |
367| name | string | 是 | 表示表单元素的名称。 |
368| value | string | 是 | 表示表单元素的值。 |
369
370
371## request.download
372
373download(config: DownloadConfig): Promise&lt;DownloadTask&gt;
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&lt;[DownloadTask](#downloadtask)&gt; | 返回下载任务。 |
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&lt;DownloadTask&gt;): 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&lt;[DownloadTask](#downloadtask)&gt; | 否 | 下载接口的回调函数。 |
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) =&gt; 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) =&gt; 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:() =&gt; 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?:() =&gt; 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) =&gt; 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) =&gt; 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&lt;boolean&gt;
639
640移除下载的任务,异步方法,使用promise形式返回结果。
641
642**需要权限**:ohos.permission.INTERNET
643
644**系统能力**: SystemCapability.MiscServices.Download
645
646**返回值:**
647
648  | 类型 | 说明 |
649  | -------- | -------- |
650  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
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&lt;boolean&gt;): void
670
671移除下载的任务,异步方法,使用callback形式返回结果。
672
673**需要权限**:ohos.permission.INTERNET
674
675**系统能力**: SystemCapability.MiscServices.Download
676
677**参数:**
678
679  | 参数名 | 参数类型 | 必填 | 说明 |
680  | -------- | -------- | -------- | -------- |
681  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
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&lt;DownloadInfo&gt;
703
704查询下载任务,异步方法,使用promise形式返回DownloadInfo里的信息。
705
706**需要权限**:ohos.permission.INTERNET
707
708**系统能力**: SystemCapability.MiscServices.Download
709
710**参数:**
711    | 类型 | 说明 |
712  | -------- | -------- |
713  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
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&lt;DownloadInfo&gt;): void
729
730查询下载的任务,异步方法,使用callback形式返回结果。
731
732**需要权限**:ohos.permission.INTERNET
733
734**系统能力**: SystemCapability.MiscServices.Download
735
736**参数:**
737
738  | 参数名 | 参数类型 | 必填 | 说明 |
739  | -------- | -------- | -------- | -------- |
740  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
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&lt;string&gt;
758
759查询下载的任务的 MimeType,异步方法,使用promise形式返回结果。
760
761**需要权限**:ohos.permission.INTERNET
762
763**系统能力**: SystemCapability.MiscServices.Download
764
765**返回值:**
766
767  | 类型 | 说明 |
768  | -------- | -------- |
769  | Promise&lt;string&gt; | 查询下载任务的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&lt;string&gt;): void;
785
786查询下载的任务的 MimeType,异步方法,使用callback形式返回结果。
787
788**需要权限**:ohos.permission.INTERNET
789
790**系统能力**: SystemCapability.MiscServices.Download
791
792**参数:**
793
794  | 参数名 | 参数类型 | 必填 | 说明 |
795  | -------- | -------- | -------- | -------- |
796  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的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&lt;void&gt;
814
815暂停下载任务,异步方法,使用promise形式返回结果。
816
817**需要权限**:ohos.permission.INTERNET
818
819**系统能力**: SystemCapability.MiscServices.Download
820
821**返回值:**
822
823  | 类型 | 说明 |
824  | -------- | -------- |
825  | Promise&lt;void&gt; | 暂停下载任务是否成功。 |
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&lt;void&gt;): void
845
846暂停下载任务,异步方法,使用callback形式返回结果。
847
848**需要权限**:ohos.permission.INTERNET
849
850**系统能力**: SystemCapability.MiscServices.Download
851
852**参数:**
853
854  | 参数名 | 参数类型 | 必填 | 说明 |
855  | -------- | -------- | -------- | -------- |
856  | callback | AsyncCallback&lt;void&gt; | 是 | 暂停下载任务的回调函数。 |
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&lt;void&gt;
878
879重新启动暂停的下载任务,异步方法,使用promise形式返回结果。
880
881**需要权限**:ohos.permission.INTERNET
882
883**系统能力**: SystemCapability.MiscServices.Download
884
885**参数:**
886
887  | 类型 | 说明 |
888  | -------- | -------- |
889  | Promise&lt;void&gt; | 重新启动暂停的下载任务是否成功。 |
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&lt;void&gt;): void
910
911重新启动暂停的下载任务,异步方法,使用callback形式返回结果。
912
913**需要权限**:ohos.permission.INTERNET
914
915**系统能力**: SystemCapability.MiscServices.Download
916
917**参数:**
918
919  | 参数名 | 参数类型 | 必填 | 说明 |
920  | -------- | -------- | -------- | -------- |
921  | callback | AsyncCallback&lt;void&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
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/>-&nbsp;filePath:'workspace/test.txt':默认路径下创建workspace路径,并将文件存储在workspace路径下。<br/>-&nbsp;filePath:'test.txt':将文件存储在默认路径下。<br/>-&nbsp;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&nbsp;bytes)。 |
971| description | string | 是 | 待下载文件的描述信息。 |
972| downloadedBytes | number | 是 | 实时下载大小(int&nbsp;&nbsp;bytes)。 |
973