• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.request (上传下载)
2
3request部件主要给应用提供上传下载文件、后台传输代理的基础能力。
4
5> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
6> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
7
8
9## 导入模块
10
11
12```js
13import request from '@ohos.request';
14```
15
16## 常量
17
18**需要权限**:ohos.permission.INTERNET
19
20**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download21
22### 网络类型
23下载支持自定义网络类型,可以在[DownloadConfig](#downloadconfig)中通过networkType配置成以下网络类型。
24
25| 名称 | 参数类型 | 数值 | 说明 |
26| -------- | -------- | -------- | -------- |
27| NETWORK_MOBILE | number | 0x00000001 | 使用蜂窝网络时允许下载的位标志。 |
28| NETWORK_WIFI | number | 0x00010000 | 使用WLAN时允许下载的位标志。 |
29
30### 下载任务的错误码
31下载[on('fail')<sup>7+</sup>](#onfail7)事件callback的错误参数、[getTaskInfo<sup>9+</sup>](#gettaskinfo9)返回值的failedReason字段取值。
32
33| 名称 | 参数类型 | 数值 | 说明 |
34| -------- | -------- | -------- | -------- |
35| ERROR_CANNOT_RESUME<sup>7+</sup> | number |   0   | 网络原因导致恢复下载失败。 |
36| ERROR_DEVICE_NOT_FOUND<sup>7+</sup> | number |   1   | 找不到SD卡等存储设备。 |
37| ERROR_FILE_ALREADY_EXISTS<sup>7+</sup> | number |   2   | 要下载的文件已存在,下载会话不能覆盖现有文件。 |
38| ERROR_FILE_ERROR<sup>7+</sup> | number |   3   | 文件操作失败。 |
39| ERROR_HTTP_DATA_ERROR<sup>7+</sup> | number |   4   | HTTP传输失败。 |
40| ERROR_INSUFFICIENT_SPACE<sup>7+</sup> | number |   5   | 存储空间不足。 |
41| ERROR_TOO_MANY_REDIRECTS<sup>7+</sup> | number |   6   | 网络重定向过多导致的错误。 |
42| ERROR_UNHANDLED_HTTP_CODE<sup>7+</sup> | number |   7   | 无法识别的HTTP代码。 |
43| ERROR_UNKNOWN<sup>7+</sup> | number |   8   | 未知错误。 |
44| ERROR_OFFLINE<sup>9+</sup> | number |   9   | 网络未连接。 |
45| ERROR_UNSUPPORTED_NETWORK_TYPE<sup>9+</sup> | number |   10   | 网络类型不匹配。 |
46
47
48### 下载任务暂停原因
49下载相关[getTaskInfo<sup>9+</sup>](#gettaskinfo9)返回值的pausedReason字段取值。
50
51| 名称 | 参数类型 | 数值 | 说明 |
52| -------- | -------- | -------- | -------- |
53| PAUSED_QUEUED_FOR_WIFI<sup>7+</sup> | number |   0   | 下载被暂停并等待WLAN连接,因为文件大小超过了使用蜂窝网络的会话允许的最大值。 |
54| PAUSED_WAITING_FOR_NETWORK<sup>7+</sup> | number |   1   | 由于网络问题(例如网络断开)而暂停下载。 |
55| PAUSED_WAITING_TO_RETRY<sup>7+</sup> | number |   2   | 发生网络错误,将重试下载会话。 |
56| PAUSED_BY_USER<sup>9+</sup> | number |   3   | 用户暂停会话。 |
57| PAUSED_UNKNOWN<sup>7+</sup> | number |   4   | 未知原因导致暂停下载。 |
58
59### 下载任务状态码
60下载相关[getTaskInfo<sup>9+</sup>](#gettaskinfo9)返回值的status字段取值。
61
62| 名称 | 参数类型 | 数值 | 说明 |
63| -------- | -------- | -------- | -------- |
64| SESSION_SUCCESSFUL<sup>7+</sup> | number |   0   | 下载会话已完成。 |
65| SESSION_RUNNING<sup>7+</sup> | number |   1   | 下载会话正在进行中。 |
66| SESSION_PENDING<sup>7+</sup> | number |   2   | 正在调度下载会话。 |
67| SESSION_PAUSED<sup>7+</sup> | number |   3   | 下载会话已暂停。 |
68| SESSION_FAILED<sup>7+</sup> | number |   4   | 下载会话已失败,将不会重试。 |
69
70
71## request.uploadFile<sup>9+</sup>
72
73uploadFile(context: BaseContext, config: UploadConfig): Promise&lt;UploadTask&gt;
74
75上传,异步方法,使用promise形式返回结果。通过[on('complete'|'fail')<sup>9+</sup>](#oncomplete--fail9)可获取任务上传时的错误信息。
76
77**需要权限**:ohos.permission.INTERNET
78
79**系统能力**: SystemCapability.MiscServices.Upload
80
81**参数:**
82
83  | 参数名 | 类型 | 必填 | 说明 |
84  | -------- | -------- | -------- | -------- |
85  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
86  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
87
88
89**返回值:**
90
91  | 类型 | 说明 |
92  | -------- | -------- |
93  | Promise&lt;[UploadTask](#uploadtask)&gt; | 返回上传任务。 |
94
95**错误码:**
96以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)。
97
98  | 错误码ID | 错误信息 |
99  | -------- | -------- |
100  | 13400002 | Bad file path. |
101
102**示例:**
103
104  ```js
105  let uploadTask;
106  let uploadConfig = {
107    url: 'https://patch',
108    header: { key1: "value1", key2: "value2" },
109    method: "POST",
110    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
111    data: [{ name: "name123", value: "123" }],
112  };
113  try {
114    request.uploadFile(globalThis.abilityContext, uploadConfig).then((data) => {
115      uploadTask = data;
116    }).catch((err) => {
117        console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
118    });
119  } catch (err) {
120    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
121  }
122  ```
123
124
125## request.uploadFile<sup>9+</sup>
126
127uploadFile(context: BaseContext, config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
128
129上传,异步方法,使用callback形式返回结果。通过[on('complete'|'fail')<sup>9+</sup>](#oncomplete--fail9)可获取任务上传时的错误信息。
130
131**需要权限**:ohos.permission.INTERNET
132
133**系统能力**: SystemCapability.MiscServices.Upload
134
135**参数:**
136
137  | 参数名 | 类型 | 必填 | 说明 |
138  | -------- | -------- | -------- | -------- |
139  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
140  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
141  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 是 | 回调函数,异步返回UploadTask对象。 |
142
143**错误码:**
144以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)。
145
146  | 错误码ID | 错误信息 |
147  | -------- | -------- |
148  | 13400002 | Bad file path. |
149
150**示例:**
151
152  ```js
153  let uploadTask;
154  let uploadConfig = {
155    url: 'https://patch',
156    header: { key1: "value1", key2: "value2" },
157    method: "POST",
158    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
159    data: [{ name: "name123", value: "123" }],
160  };
161  try {
162    request.uploadFile(globalThis.abilityContext, uploadConfig, (err, data) => {
163      if (err) {
164          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
165          return;
166      }
167      uploadTask = data;
168    });
169  } catch (err) {
170    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
171  }
172  ```
173
174## request.upload<sup>(deprecated)</sup>
175
176upload(config: UploadConfig): Promise&lt;UploadTask&gt;
177
178上传,异步方法,使用promise形式返回结果。
179
180**模型约束**:此接口仅可在FA模型下使用
181
182>  **说明:** 从API Version 9开始不再维护,建议使用[request.uploadFile<sup>9+</sup>](#requestuploadfile9)替代。
183
184**需要权限**:ohos.permission.INTERNET
185
186**系统能力**: SystemCapability.MiscServices.Upload
187
188**参数:**
189
190  | 参数名 | 类型 | 必填 | 说明 |
191  | -------- | -------- | -------- | -------- |
192  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
193
194**返回值:**
195
196  | 类型 | 说明 |
197  | -------- | -------- |
198  | Promise&lt;[UploadTask](#uploadtask)&gt; | 返回上传任务。 |
199
200**示例:**
201
202  ```js
203  let uploadTask;
204  let uploadConfig = {
205    url: 'https://patch',
206    header: { key1: "value1", key2: "value2" },
207    method: "POST",
208    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
209    data: [{ name: "name123", value: "123" }],
210  };
211  request.upload(uploadConfig).then((data) => {
212      uploadTask = data;
213  }).catch((err) => {
214      console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
215  })
216  ```
217
218
219## request.upload<sup>(deprecated)</sup>
220
221upload(config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
222
223上传,异步方法,使用callback形式返回结果。
224
225**模型约束**:此接口仅可在FA模型下使用
226
227>  **说明:** 从API Version 9开始不再维护,建议使用[request.uploadFile<sup>9+</sup>](#requestuploadfile9-1)替代。
228
229**需要权限**:ohos.permission.INTERNET
230
231**系统能力**: SystemCapability.MiscServices.Upload
232
233**参数:**
234
235  | 参数名 | 类型 | 必填 | 说明 |
236  | -------- | -------- | -------- | -------- |
237  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
238  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 是 | 回调函数,异步返回UploadTask对象。 |
239
240**示例:**
241
242  ```js
243  let uploadTask;
244  let uploadConfig = {
245    url: 'https://patch',
246    header: { key1: "value1", key2: "value2" },
247    method: "POST",
248    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
249    data: [{ name: "name123", value: "123" }],
250  };
251  request.upload(uploadConfig, (err, data) => {
252      if (err) {
253          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
254          return;
255      }
256      uploadTask = data;
257  });
258  ```
259
260## UploadTask
261
262上传任务,使用下列方法前,需要先获取UploadTask对象。
263
264
265### on('progress')
266
267on(type: 'progress', callback:(uploadedSize: number, totalSize: number) =&gt; void): void
268
269订阅上传任务进度监听,同步方法,使用callback形式返回结果。
270
271**需要权限**:ohos.permission.INTERNET
272
273**系统能力**: SystemCapability.MiscServices.Upload
274
275**参数:**
276
277  | 参数名 | 类型 | 必填 | 说明 |
278  | -------- | -------- | -------- | -------- |
279  | type | string | 是 | 订阅的事件类型,取值为'progress'(上传的进度信息)。 |
280  | callback | function | 是 | 上传进度的回调函数。 |
281
282  回调函数的参数
283
284| 参数名 | 类型 | 必填 | 说明 |
285| -------- | -------- | -------- | -------- |
286| uploadedSize | number | 是 | 当前已上传文件大小,单位为bit。 |
287| totalSize | number | 是 | 上传文件的总大小,单位为bit。 |
288
289**示例:**
290
291  ```js
292  let upProgressCallback = (uploadedSize, totalSize) => {
293      console.info("upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize);
294  };
295  uploadTask.on('progress', upProgressCallback);
296  ```
297
298
299### on('headerReceive')<sup>7+</sup>
300
301on(type: 'headerReceive', callback:  (header: object) =&gt; void): void
302
303订阅上传任务HTTP标头监听,同步方法,使用callback形式返回结果。
304
305**需要权限**:ohos.permission.INTERNET
306
307**系统能力**: SystemCapability.MiscServices.Upload
308
309**参数:**
310
311  | 参数名 | 类型 | 必填 | 说明 |
312  | -------- | -------- | -------- | -------- |
313  | type | string | 是 | 订阅的事件类型,取值为'headerReceive'(接收响应头)。 |
314  | callback | function | 是 | HTTP&nbsp;Response&nbsp;Header事件的回调函数。 |
315
316  回调函数的参数:
317
318| 参数名 | 类型 | 必填 | 说明 |
319| -------- | -------- | -------- | -------- |
320| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
321
322**示例:**
323
324  ```js
325  let headerCallback = (headers) => {
326      console.info("upOnHeader headers:" + JSON.stringify(headers));
327  };
328  uploadTask.on('headerReceive', headerCallback);
329  ```
330
331
332### on('complete' | 'fail')<sup>9+</sup>
333
334 on(type:'complete' | 'fail', callback: Callback&lt;Array&lt;TaskState&gt;&gt;): void;
335
336订阅上传任务完成或失败监听,同步方法,使用callback形式返回结果。
337
338**需要权限**:ohos.permission.INTERNET
339
340**系统能力**: SystemCapability.MiscServices.Upload
341
342**参数:**
343
344  | 参数名 | 类型 | 必填 | 说明 |
345  | -------- | -------- | -------- | -------- |
346  | type | string | 是 | 订阅的事件类型,取值为'complete',表示上传任务完成;取值为'fail',表示上传任务失败。|
347  | callback | Callback&lt;Array&lt;TaskState&gt;&gt; | 是 | 上传任务完成或失败的回调函数。 |
348
349  回调函数的参数
350
351| 参数名 | 类型 | 必填 | 说明 |
352| -------- | -------- | -------- | -------- |
353| taskstates | Array&lt;[TaskState](#taskstate9)&gt; | 是 | 上传任务返回结果 |
354
355**示例:**
356
357  ```js
358  let upCompleteCallback = (taskStates) => {
359    for (let i = 0; i < taskStates.length; i++ ) {
360        console.info("upOnComplete taskState:" + JSON.stringify(taskStates[i]));
361    }
362  };
363  uploadTask.on('complete', upComplete);
364
365  let upFailCallback = (taskStates) => {
366    for (let i = 0; i < taskStates.length; i++ ) {
367      console.info("upOnFail taskState:" + JSON.stringify(taskStates[i]));
368    }
369  };
370  uploadTask.on('fail', upFailCallback);
371  ```
372
373
374### off('progress')
375
376off(type:  'progress',  callback?: (uploadedSize: number, totalSize: number) =&gt;  void): void
377
378删除上传任务进度监听,同步方法。
379
380**需要权限**:ohos.permission.INTERNET
381
382**系统能力**: SystemCapability.MiscServices.Upload
383
384**参数:**
385
386  | 参数名 | 类型 | 必填 | 说明 |
387  | -------- | -------- | -------- | -------- |
388  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(上传的进度信息)。 |
389  | callback | function | 否 | 需要删除的上传任务进度的回调函数。<br/>uploadedSize:当前已上传文件的大小,单位为B。<br/>totalSize:上传文件的总大小,单位为B。 |
390
391**示例:**
392
393  ```js
394  uploadTask.off('progress', upProgressCallback);
395  ```
396
397
398### off('headerReceive')<sup>7+</sup>
399
400off(type: 'headerReceive', callback?: (header: object) =&gt; void): void
401
402删除上传任务HTTP标头监听,同步方法。
403
404**需要权限**:ohos.permission.INTERNET
405
406**系统能力**: SystemCapability.MiscServices.Upload
407
408**参数:**
409
410  | 参数名 | 类型 | 必填 | 说明 |
411  | -------- | -------- | -------- | -------- |
412  | type | string | 是 | 取消订阅的事件类型,取值为'headerReceive'(接收响应头)。 |
413  | callback | function | 否 | HTTP&nbsp;Response&nbsp;需要删除的Header事件的回调函数。<br/>header:HTTP&nbsp;Response&nbsp;Header。 |
414
415**示例:**
416
417  ```js
418  uploadTask.off('headerReceive', headerCallback);
419  ```
420
421### off('complete' | 'fail')<sup>9+</sup>
422
423 off(type:'complete' | 'fail', callback?: Callback&lt;Array&lt;TaskState&gt;&gt;): void;
424
425删除上传任务完成或失败监听,同步方法。
426
427**需要权限**:ohos.permission.INTERNET
428
429**系统能力**: SystemCapability.MiscServices.Upload
430
431**参数:**
432
433  | 参数名 | 类型 | 必填 | 说明 |
434  | -------- | -------- | -------- | -------- |
435  | type | string | 是 | 订阅的事件类型,取值为'complete',表示上传任务完成;取值为'fail',表示上传任务失败。|
436  | callback | Callback&lt;Array&lt;TaskState&gt;&gt; | 否 | 需要删除的上传任务完成或失败的回调函数。<br/>taskstates:上传任务返回结果 |
437
438**示例:**
439
440  ```js
441  uploadTask.off('complete', upCompleteCallback);
442
443  uploadTask.off('fail', upFailCallback);
444  ```
445
446### delete<sup>9+</sup>
447delete(): Promise&lt;boolean&gt;
448
449移除上传的任务,异步方法,使用promise形式返回结果。
450
451**需要权限**:ohos.permission.INTERNET
452
453**系统能力**: SystemCapability.MiscServices.Upload
454
455**返回值:**
456
457  | 类型 | 说明 |
458  | -------- | -------- |
459  | Promise&lt;boolean&gt; | 移除任务是否成功。true:成功,false:不成功。 |
460
461**示例:**
462
463  ```js
464  uploadTask.delete().then((result) => {
465      if (result) {
466          console.info('Upload task removed successfully. ');
467      } else {
468          console.error('Failed to remove the upload task. ');
469      }
470  }).catch((err) => {
471      console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err));
472  });
473  ```
474
475
476### delete<sup>9+</sup>
477
478delete(callback: AsyncCallback&lt;boolean&gt;): void
479
480移除上传的任务,异步方法,使用callback形式返回结果。
481
482**需要权限**:ohos.permission.INTERNET
483
484**系统能力**: SystemCapability.MiscServices.Upload
485
486**参数:**
487
488  | 参数名 | 类型 | 必填 | 说明 |
489  | -------- | -------- | -------- | -------- |
490  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务的回调函数。 |
491
492**示例:**
493
494  ```js
495  uploadTask.delete((err, result) => {
496      if (err) {
497          console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err));
498          return;
499      }
500      if (result) {
501          console.info('Upload task removed successfully.');
502      } else {
503          console.error('Failed to remove the upload task.');
504      }
505  });
506  ```
507
508
509### remove<sup>(deprecated)</sup>
510
511remove(): Promise&lt;boolean&gt;
512
513移除上传的任务,异步方法,使用promise形式返回结果。
514
515>  **说明:** 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9)替代。
516
517**需要权限**:ohos.permission.INTERNET
518
519**系统能力**: SystemCapability.MiscServices.Upload
520
521**返回值:**
522
523  | 类型 | 说明 |
524  | -------- | -------- |
525  | Promise&lt;boolean&gt; | 移除任务是否成功。true:成功,false:不成功。 |
526
527**示例:**
528
529  ```js
530  uploadTask.remove().then((result) => {
531      if (result) {
532          console.info('Upload task removed successfully. ');
533      } else {
534          console.error('Failed to remove the upload task. ');
535      }
536  }).catch((err) => {
537      console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err));
538  });
539  ```
540
541
542### remove<sup>(deprecated)</sup>
543
544remove(callback: AsyncCallback&lt;boolean&gt;): void
545
546移除上传的任务,异步方法,使用callback形式返回结果。
547
548>  **说明:** 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9-1)替代。
549
550**需要权限**:ohos.permission.INTERNET
551
552**系统能力**: SystemCapability.MiscServices.Upload
553
554**参数:**
555
556  | 参数名 | 类型 | 必填 | 说明 |
557  | -------- | -------- | -------- | -------- |
558  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务的回调函数。 |
559
560**示例:**
561
562  ```js
563  uploadTask.remove((err, result) => {
564      if (err) {
565          console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err));
566          return;
567      }
568      if (result) {
569          console.info('Upload task removed successfully.');
570      } else {
571          console.error('Failed to remove the upload task.');
572      }
573  });
574  ```
575
576## UploadConfig
577上传任务的配置信息。
578
579**需要权限**:ohos.permission.INTERNET
580
581**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Upload582
583| 名称 | 类型 | 必填 | 说明 |
584| -------- | -------- | -------- | -------- |
585| url | string | 是 | 资源地址。 |
586| header | Object | 是 | 添加要包含在上传请求中的HTTP或HTTPS标志头。 |
587| method | string | 是 | 请求方法:POST、PUT。缺省为POST。 |
588| files | Array&lt;[File](#file)&gt; | 是 | 要上传的文件列表。请使用&nbsp;multipart/form-data提交。 |
589| data | Array&lt;[RequestData](#requestdata)&gt; | 是 | 请求的表单数据。 |
590
591## TaskState<sup>9+</sup>
592
593上传任务信息,[on('complete' | 'fail')<sup>9+</sup>](#oncomplete--fail9)和[off('complete' | 'fail')<sup>9+</sup>](#offcomplete--fail9)接口的回调参数。
594
595**需要权限**:ohos.permission.INTERNET
596
597**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Upload598
599| 名称 | 类型 | 必填 | 说明 |
600| -------- | -------- | -------- | -------- |
601| path | string | 是 | 文件路径 |
602| responseCode | number | 是 | 上传任务返回值 |
603| message | string | 是 | 上传任务结果描述信息 |
604
605## File
606[UploadConfig](#uploadconfig)中的文件列表。
607
608**需要权限**:ohos.permission.INTERNET
609
610**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download611
612| 名称 | 类型 | 必填 | 说明 |
613| -------- | -------- | -------- | -------- |
614| filename | string | 是 | multipart提交时,请求头中的文件名。 |
615| name | string | 是 | multipart提交时,表单项目的名称,缺省为file。 |
616| uri | string | 是 | 文件的本地存储路径。<br/>仅支持“internal”协议类型,“internal://cache/”为必填字段,示例:<br/>internal://cache/path/to/file.txt |
617| type | string | 是 | 文件的内容类型,默认根据文件名或路径的后缀获取。 |
618
619
620## RequestData
621[UploadConfig](#uploadconfig)中的表单数据。
622
623**需要权限**:ohos.permission.INTERNET
624
625**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download626
627| 名称 | 类型 | 必填 | 说明 |
628| -------- | -------- | -------- | -------- |
629| name | string | 是 | 表示表单元素的名称。 |
630| value | string | 是 | 表示表单元素的值。 |
631
632## request.downloadFile<sup>9+</sup>
633
634downloadFile(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
635
636下载,异步方法,使用promise形式返回结果。通过[on('complete'|'pause'|'remove')<sup>7+</sup>](#oncompletepauseremove7)可获取任务下载时的状态信息,包括任务完成、暂停或移除。通过[on('fail')<sup>7+</sup>](#onfail7)可获取任务下载时的错误信息。
637
638**需要权限**:ohos.permission.INTERNET
639
640**系统能力**: SystemCapability.MiscServices.Download
641
642**参数:**
643
644  | 参数名 | 类型 | 必填 | 说明 |
645  | -------- | -------- | -------- | -------- |
646  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
647  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
648
649**返回值:**
650
651  | 类型 | 说明 |
652  | -------- | -------- |
653  | Promise&lt;[DownloadTask](#downloadtask)&gt; | 返回下载任务。 |
654
655**错误码:**
656以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)。
657
658  | 错误码ID | 错误信息 |
659  | -------- | -------- |
660  | 13400001 | File operation error. |
661  | 13400002 | Bad file path. |
662  | 13400003 | Task manager service error. |
663
664**示例:**
665
666  ```js
667  let downloadTask;
668  try {
669    request.downloadFile(globalThis.abilityContext, { url: 'https://xxxx/xxxx.hap' }).then((data) => {
670        downloadTask = data;
671    }).catch((err) => {
672        console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
673    })
674  } catch (err) {
675    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
676  }
677  ```
678
679
680## request.downloadFile<sup>9+</sup>
681
682downloadFile(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
683
684下载,异步方法,使用callback形式返回结果。通过[on('complete'|'pause'|'remove')<sup>7+</sup>](#oncompletepauseremove7)可获取任务下载时的状态信息,包括任务完成、暂停或移除。通过[on('fail')<sup>7+</sup>](#onfail7)可获取任务下载时的错误信息。
685
686**需要权限**:ohos.permission.INTERNET
687
688**系统能力**: SystemCapability.MiscServices.Download
689
690**参数:**
691
692  | 参数名 | 类型 | 必填 | 说明 |
693  | -------- | -------- | -------- | -------- |
694  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
695  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
696  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
697
698**错误码:**
699以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)。
700
701  | 错误码ID | 错误信息 |
702  | -------- | -------- |
703  | 13400001 | File operation error. |
704  | 13400002 | Bad file path. |
705  | 13400003 | Task manager service error. |
706
707**示例:**
708
709  ```js
710  let downloadTask;
711  try {
712    request.downloadFile(globalThis.abilityContext, { url: 'https://xxxx/xxxxx.hap',
713    filePath: 'xxx/xxxxx.hap'}, (err, data) => {
714        if (err) {
715            console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
716            return;
717        }
718        downloadTask = data;
719    });
720  } catch (err) {
721    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
722  }
723  ```
724
725## request.download<sup>(deprecated)</sup>
726
727download(config: DownloadConfig): Promise&lt;DownloadTask&gt;
728
729下载,异步方法,使用promise形式返回结果。
730
731>  **说明:** 从API Version 9开始不再维护,建议使用[request.downloadFile<sup>9+</sup>](#requestdownloadfile9)替代。
732
733**模型约束**:此接口仅可在FA模型下使用
734
735**需要权限**:ohos.permission.INTERNET
736
737**系统能力**: SystemCapability.MiscServices.Download
738
739**参数:**
740
741  | 参数名 | 类型 | 必填 | 说明 |
742  | -------- | -------- | -------- | -------- |
743  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
744
745**返回值:**
746
747  | 类型 | 说明 |
748  | -------- | -------- |
749  | Promise&lt;[DownloadTask](#downloadtask)&gt; | 返回下载任务。 |
750
751**示例:**
752
753  ```js
754  let downloadTask;
755  request.download({ url: 'https://xxxx/xxxx.hap' }).then((data) => {
756      downloadTask = data;
757  }).catch((err) => {
758      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
759  })
760  ```
761
762
763## request.download<sup>(deprecated)</sup>
764
765download(config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void
766
767下载,异步方法,使用callback形式返回结果。
768
769>  **说明:** 从API Version 9开始不再维护,建议使用[request.downloadFile<sup>9+</sup>](#requestdownloadfile9-1)替代。
770
771**模型约束**:此接口仅可在FA模型下使用
772
773**需要权限**:ohos.permission.INTERNET
774
775**系统能力**: SystemCapability.MiscServices.Download
776
777**参数:**
778
779  | 参数名 | 类型 | 必填 | 说明 |
780  | -------- | -------- | -------- | -------- |
781  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
782  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
783
784**示例:**
785
786  ```js
787  let downloadTask;
788  request.download({ url: 'https://xxxx/xxxxx.hap',
789  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
790      if (err) {
791          console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
792          return;
793      }
794      downloadTask = data;
795  });
796  ```
797
798## DownloadTask
799
800下载任务。
801
802
803### on('progress')
804
805on(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; void): void
806
807订阅下载任务进度监听,同步方法,使用callback形式返回结果。
808
809**需要权限**:ohos.permission.INTERNET
810
811**系统能力**: SystemCapability.MiscServices.Download
812
813**参数:**
814
815  | 参数名 | 类型 | 必填 | 说明 |
816  | -------- | -------- | -------- | -------- |
817  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
818  | callback | function | 是 | 下载任务进度的回调函数。 |
819
820  回调函数的参数:
821
822| 参数名 | 类型 | 必填 | 说明 |
823| -------- | -------- | -------- | -------- |
824| receivedSize | number | 是 | 当前下载的进度,单位为bit。 |
825| totalSize | number | 是 | 下载文件的总大小,单位为bit。 |
826
827**示例:**
828
829  ```js
830  let progresCallbanck = (receivedSize, totalSize) => {
831      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
832  };
833  downloadTask.on('progress', progresCallbanck);
834  ```
835
836
837### off('progress')
838
839off(type: 'progress', callback?: (receivedSize: number, totalSize: number) =&gt; void): void
840
841删除下载任务进度监听,同步方法。
842
843**需要权限**:ohos.permission.INTERNET
844
845**系统能力**: SystemCapability.MiscServices.Download
846
847**参数:**
848
849  | 参数名 | 类型 | 必填 | 说明 |
850  | -------- | -------- | -------- | -------- |
851  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(下载的进度信息)。 |
852  | callback | function | 否 | 需要删除的下载任务进度的回调。 <br/>receivedSize:当前下载任务的进度;<br/>totalSize:下载文件的总大小。 |
853
854**示例:**
855
856  ```js
857  downloadTask .off('progress',progresCallbanck);
858  ```
859
860
861### on('complete'|'pause'|'remove')<sup>7+</sup>
862
863on(type: 'complete'|'pause'|'remove', callback:() =&gt; void): void
864
865订阅下载任务相关的监听,异步方法,使用callback形式返回。
866
867**需要权限**:ohos.permission.INTERNET
868
869**系统能力**: SystemCapability.MiscServices.Download
870
871**参数:**
872
873  | 参数名 | 类型 | 必填 | 说明 |
874  | -------- | -------- | -------- | -------- |
875  | type | string | 是 | 订阅的事件类型。<br>- 取值为'complete',表示下载任务完成;<br/>- 取值为'pause',表示下载任务暂停;<br/>- 取值为'remove',表示下载任务移除。 |
876  | callback | function | 是 | 下载任务相关的回调函数。|
877
878**示例:**
879
880  ```js
881  let completeCallback = () => {
882      console.info('Download task completed.');
883  };
884  downloadTask.on('complete', completeCallback);
885  ```
886
887
888### off('complete'|'pause'|'remove')<sup>7+</sup>
889
890off(type: 'complete'|'pause'|'remove', callback?:() =&gt; void): void
891
892删除下载任务相关的监听,同步方法。
893
894**需要权限**:ohos.permission.INTERNET
895
896**系统能力**: SystemCapability.MiscServices.Download
897
898**参数:**
899
900  | 参数名 | 类型 | 必填 | 说明 |
901  | -------- | -------- | -------- | -------- |
902  | type | string | 是 | 取消订阅的事件类型。<br/>- 取值为'complete',表示下载任务完成;<br/>- 取值为'pause',表示下载任务暂停;<br/>- 取值为'remove',表示下载任务移除。 |
903  | callback | function | 否 | 需要删除的下载任务相关的回调。 |
904
905**示例:**
906
907  ```js
908  downloadTask.off('complete', completeCallback);
909  ```
910
911
912### on('fail')<sup>7+</sup>
913
914on(type: 'fail', callback: (err: number) =&gt; void): void
915
916订阅下载任务失败监听,同步方法,使用callback形式返回结果。
917
918**需要权限**:ohos.permission.INTERNET
919
920**系统能力**: SystemCapability.MiscServices.Download
921
922**参数:**
923
924  | 参数名 | 类型 | 必填 | 说明 |
925  | -------- | -------- | -------- | -------- |
926  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
927  | callback | function | 是 | 下载失败的回调函数。 |
928
929  回调函数的参数:
930
931| 参数名 | 类型 | 必填 | 说明 |
932| -------- | -------- | -------- | -------- |
933| err | number | 是 | 下载失败的错误码,错误原因见[下载任务的错误码](#下载任务的错误码)。 |
934
935**示例:**
936
937  ```js
938  let failCallback = (err) => {
939      console.info('Download task failed. Cause:' + err);
940  };
941  downloadTask.on('fail', failCallback);
942  ```
943
944
945### off('fail')<sup>7+</sup>
946
947off(type: 'fail', callback?: (err: number) =&gt; void): void
948
949删除下载任务失败监听,同步方法。
950
951**需要权限**:ohos.permission.INTERNET
952
953**系统能力**: SystemCapability.MiscServices.Download
954
955**参数:**
956
957  | 参数名 | 类型 | 必填 | 说明 |
958  | -------- | -------- | -------- | -------- |
959  | type | string | 是 | 取消订阅的事件类型,取值为'fail'(下载失败)。 |
960  | callback | function | 否 | 需要删除的下载失败的回调函数。<br/>err:下载失败的错误码。 |
961
962**示例:**
963
964  ```js
965  downloadTask.off('fail', failCallback);
966  ```
967
968### delete<sup>9+</sup>
969
970delete(): Promise&lt;boolean&gt;
971
972移除下载的任务,异步方法,使用promise形式返回结果。
973
974**需要权限**:ohos.permission.INTERNET
975
976**系统能力**: SystemCapability.MiscServices.Download
977
978**返回值:**
979
980  | 类型 | 说明 |
981  | -------- | -------- |
982  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
983
984**示例:**
985
986  ```js
987  downloadTask.delete().then((result) => {
988      if (result) {
989          console.info('Download task removed.');
990      } else {
991          console.error('Failed to remove the download task.');
992      }
993  }).catch ((err) => {
994      console.error('Failed to remove the download task.');
995  });
996  ```
997
998
999### delete<sup>9+</sup>
1000
1001delete(callback: AsyncCallback&lt;boolean&gt;): void
1002
1003移除下载的任务,异步方法,使用callback形式返回结果。
1004
1005**需要权限**:ohos.permission.INTERNET
1006
1007**系统能力**: SystemCapability.MiscServices.Download
1008
1009**参数:**
1010
1011  | 参数名 | 类型 | 必填 | 说明 |
1012  | -------- | -------- | -------- | -------- |
1013  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
1014
1015**示例:**
1016
1017  ```js
1018  downloadTask.delete((err, result)=>{
1019      if(err) {
1020          console.error('Failed to remove the download task.');
1021          return;
1022      }
1023      if (result) {
1024          console.info('Download task removed.');
1025      } else {
1026          console.error('Failed to remove the download task.');
1027      }
1028  });
1029  ```
1030
1031
1032### getTaskInfo<sup>9+</sup>
1033
1034getTaskInfo(): Promise&lt;DownloadInfo&gt;
1035
1036查询下载任务,异步方法,使用promise形式返回DownloadInfo里的信息。
1037
1038**需要权限**:ohos.permission.INTERNET
1039
1040**系统能力**: SystemCapability.MiscServices.Download
1041
1042**返回值:**
1043
1044  | 类型 | 说明 |
1045  | -------- | -------- |
1046  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
1047
1048**示例:**
1049
1050  ```js
1051  downloadTask.getTaskInfo().then((downloadInfo) => {
1052      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
1053  }) .catch((err) => {
1054      console.error('Failed to query the download task. Cause:' + err)
1055  });
1056  ```
1057
1058
1059### getTaskInfo<sup>9+</sup>
1060
1061getTaskInfo(callback: AsyncCallback&lt;DownloadInfo&gt;): void
1062
1063查询下载的任务,异步方法,使用callback形式返回结果。
1064
1065**需要权限**:ohos.permission.INTERNET
1066
1067**系统能力**: SystemCapability.MiscServices.Download
1068
1069**参数:**
1070
1071  | 参数名 | 类型 | 必填 | 说明 |
1072  | -------- | -------- | -------- | -------- |
1073  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
1074
1075**示例:**
1076
1077  ```js
1078  downloadTask.getTaskInfo((err, downloadInfo)=>{
1079      if(err) {
1080          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
1081      } else {
1082          console.info('download query success. data:'+ JSON.stringify(downloadInfo));
1083      }
1084  });
1085  ```
1086
1087
1088### getTaskMimeType<sup>9+</sup>
1089
1090getTaskMimeType(): Promise&lt;string&gt;
1091
1092查询下载的任务的 MimeType,异步方法,使用promise形式返回结果。
1093
1094**需要权限**:ohos.permission.INTERNET
1095
1096**系统能力**: SystemCapability.MiscServices.Download
1097
1098**返回值:**
1099
1100  | 类型 | 说明 |
1101  | -------- | -------- |
1102  | Promise&lt;string&gt; | 查询下载任务的MimeType。 |
1103
1104**示例:**
1105
1106  ```js
1107  downloadTask.getTaskMimeType().then((data) => {
1108      console.info('Download task queried. Data:' + JSON.stringify(data));
1109  }).catch((err) => {
1110      console.error('Failed to query the download MimeType. Cause:' + JSON.stringify(err))
1111  });
1112  ```
1113
1114
1115### getTaskMimeType<sup>9+</sup>
1116
1117getTaskMimeType(callback: AsyncCallback&lt;string&gt;): void;
1118
1119查询下载的任务的 MimeType,异步方法,使用callback形式返回结果。
1120
1121**需要权限**:ohos.permission.INTERNET
1122
1123**系统能力**: SystemCapability.MiscServices.Download
1124
1125**参数:**
1126
1127  | 参数名 | 类型 | 必填 | 说明 |
1128  | -------- | -------- | -------- | -------- |
1129  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的MimeType的回调函数。 |
1130
1131**示例:**
1132
1133  ```js
1134  downloadTask.getTaskMimeType((err, data)=>{
1135      if(err) {
1136          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
1137      } else {
1138          console.info('Download task queried. data:' + JSON.stringify(data));
1139      }
1140  });
1141  ```
1142
1143
1144### suspend<sup>9+</sup>
1145
1146suspend(): Promise&lt;boolean&gt;
1147
1148暂停下载任务,异步方法,使用promise形式返回结果。
1149
1150**需要权限**:ohos.permission.INTERNET
1151
1152**系统能力**: SystemCapability.MiscServices.Download
1153
1154**返回值:**
1155
1156  | 类型 | 说明 |
1157  | -------- | -------- |
1158  | Promise&lt;boolean&gt; | 暂停下载任务是否成功。 |
1159
1160**示例:**
1161
1162  ```js
1163  downloadTask.suspend().then((result) => {
1164      if (result) {
1165           console.info('Download task paused. ');
1166      } else {
1167          console.error('Failed to pause the download task. Cause:' + JSON.stringify(result));
1168      }
1169  }).catch((err) => {
1170      console.error('Failed to pause the download task. Cause:' + JSON.stringify(err));
1171  });
1172  ```
1173
1174
1175### suspend<sup>9+</sup>
1176
1177suspend(callback: AsyncCallback&lt;boolean&gt;): void
1178
1179暂停下载任务,异步方法,使用callback形式返回结果。
1180
1181**需要权限**:ohos.permission.INTERNET
1182
1183**系统能力**: SystemCapability.MiscServices.Download
1184
1185**参数:**
1186
1187  | 参数名 | 类型 | 必填 | 说明 |
1188  | -------- | -------- | -------- | -------- |
1189  | callback | AsyncCallback&lt;boolean&gt; | 是 | 暂停下载任务的回调函数。 |
1190
1191**示例:**
1192
1193  ```js
1194  downloadTask.suspend((err, result)=>{
1195      if(err) {
1196          console.error('Failed to pause the download task. Cause:' + JSON.stringify(err));
1197          return;
1198      }
1199      if (result) {
1200           console.info('Download task paused. ');
1201      } else {
1202          console.error('Failed to pause the download task. Cause:' + JSON.stringify(result));
1203      }
1204  });
1205  ```
1206
1207
1208### restore<sup>9+</sup>
1209
1210restore(): Promise&lt;boolean&gt;
1211
1212重新启动暂停的下载任务,异步方法,使用promise形式返回结果。
1213
1214**需要权限**:ohos.permission.INTERNET
1215
1216**系统能力**: SystemCapability.MiscServices.Download
1217
1218**返回值:**
1219
1220  | 类型 | 说明 |
1221  | -------- | -------- |
1222  | Promise&lt;boolean&gt; | 重新启动暂停的下载任务是否成功。 |
1223
1224**示例:**
1225
1226  ```js
1227  downloadTask.restore().then((result) => {
1228      if (result) {
1229          console.info('Download task resumed.')
1230      } else {
1231          console.error('Failed to resume the download task. ');
1232      }
1233      console.info('Download task resumed.')
1234  }).catch((err) => {
1235      console.error('Failed to resume the download task. Cause:' + err);
1236  });
1237  ```
1238
1239
1240### restore<sup>9+</sup>
1241
1242restore(callback: AsyncCallback&lt;boolean&gt;): void
1243
1244重新启动暂停的下载任务,异步方法,使用callback形式返回结果。
1245
1246**需要权限**:ohos.permission.INTERNET
1247
1248**系统能力**: SystemCapability.MiscServices.Download
1249
1250**参数:**
1251
1252  | 参数名 | 类型 | 必填 | 说明 |
1253  | -------- | -------- | -------- | -------- |
1254  | callback | AsyncCallback&lt;boolean&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
1255
1256**示例:**
1257
1258  ```js
1259  downloadTask.restore((err, result)=>{
1260      if (err) {
1261          console.error('Failed to resume the download task. Cause:' + err);
1262          return;
1263      }
1264      if (result) {
1265          console.info('Download task resumed.');
1266      } else {
1267          console.error('Failed to resume the download task.');
1268      }
1269  });
1270  ```
1271
1272
1273
1274### remove<sup>(deprecated)</sup>
1275
1276remove(): Promise&lt;boolean&gt;
1277
1278移除下载的任务,异步方法,使用promise形式返回结果。
1279
1280>  **说明:** 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9-2)替代。
1281
1282**需要权限**:ohos.permission.INTERNET
1283
1284**系统能力**: SystemCapability.MiscServices.Download
1285
1286**返回值:**
1287
1288  | 类型 | 说明 |
1289  | -------- | -------- |
1290  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
1291
1292**示例:**
1293
1294  ```js
1295  downloadTask.remove().then((result) => {
1296      if (result) {
1297          console.info('Download task removed.');
1298      } else {
1299          console.error('Failed to remove the download task.');
1300      }
1301  }).catch ((err) => {
1302      console.error('Failed to remove the download task.');
1303  });
1304  ```
1305
1306
1307### remove<sup>(deprecated)</sup>
1308
1309remove(callback: AsyncCallback&lt;boolean&gt;): void
1310
1311移除下载的任务,异步方法,使用callback形式返回结果。
1312
1313>  **说明:** 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9-3)替代。
1314
1315**需要权限**:ohos.permission.INTERNET
1316
1317**系统能力**: SystemCapability.MiscServices.Download
1318
1319**参数:**
1320
1321  | 参数名 | 类型 | 必填 | 说明 |
1322  | -------- | -------- | -------- | -------- |
1323  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
1324
1325**示例:**
1326
1327  ```js
1328  downloadTask.remove((err, result)=>{
1329      if(err) {
1330          console.error('Failed to remove the download task.');
1331          return;
1332      }
1333      if (result) {
1334          console.info('Download task removed.');
1335      } else {
1336          console.error('Failed to remove the download task.');
1337      }
1338  });
1339  ```
1340
1341
1342### query<sup>(deprecated)</sup>
1343
1344query(): Promise&lt;DownloadInfo&gt;
1345
1346查询下载任务,异步方法,使用promise形式返回DownloadInfo里的信息。
1347
1348>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskInfo<sup>9+</sup>](#gettaskinfo9)替代。
1349
1350**需要权限**:ohos.permission.INTERNET
1351
1352**系统能力**: SystemCapability.MiscServices.Download
1353
1354**返回值:**
1355
1356  | 类型 | 说明 |
1357  | -------- | -------- |
1358  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
1359
1360**示例:**
1361
1362  ```js
1363  downloadTask.query().then((downloadInfo) => {
1364      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
1365  }) .catch((err) => {
1366      console.error('Failed to query the download task. Cause:' + err)
1367  });
1368  ```
1369
1370
1371### query<sup>(deprecated)</sup>
1372
1373query(callback: AsyncCallback&lt;DownloadInfo&gt;): void
1374
1375查询下载的任务,异步方法,使用callback形式返回结果。
1376
1377>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskInfo<sup>9+</sup>](#gettaskinfo9-1)替代。
1378
1379**需要权限**:ohos.permission.INTERNET
1380
1381**系统能力**: SystemCapability.MiscServices.Download
1382
1383**参数:**
1384
1385  | 参数名 | 类型 | 必填 | 说明 |
1386  | -------- | -------- | -------- | -------- |
1387  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
1388
1389**示例:**
1390
1391  ```js
1392  downloadTask.query((err, downloadInfo)=>{
1393      if(err) {
1394          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
1395      } else {
1396          console.info('download query success. data:'+ JSON.stringify(downloadInfo));
1397      }
1398  });
1399  ```
1400
1401
1402### queryMimeType<sup>(deprecated)</sup>
1403
1404queryMimeType(): Promise&lt;string&gt;
1405
1406查询下载的任务的 MimeType,异步方法,使用promise形式返回结果。
1407
1408>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskMimeType<sup>9+</sup>](#gettaskmimetype9)替代。
1409
1410**需要权限**:ohos.permission.INTERNET
1411
1412**系统能力**: SystemCapability.MiscServices.Download
1413
1414**返回值:**
1415
1416  | 类型 | 说明 |
1417  | -------- | -------- |
1418  | Promise&lt;string&gt; | 查询下载任务的MimeType。 |
1419
1420**示例:**
1421
1422  ```js
1423  downloadTask.queryMimeType().then((data) => {
1424      console.info('Download task queried. Data:' + JSON.stringify(data));
1425  }).catch((err) => {
1426      console.error('Failed to query the download MimeType. Cause:' + JSON.stringify(err))
1427  });
1428  ```
1429
1430
1431### queryMimeType<sup>(deprecated)</sup>
1432
1433queryMimeType(callback: AsyncCallback&lt;string&gt;): void;
1434
1435查询下载的任务的 MimeType,异步方法,使用callback形式返回结果。
1436
1437>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskMimeType<sup>9+</sup>](#gettaskmimetype9-1)替代。
1438
1439**需要权限**:ohos.permission.INTERNET
1440
1441**系统能力**: SystemCapability.MiscServices.Download
1442
1443**参数:**
1444
1445  | 参数名 | 类型 | 必填 | 说明 |
1446  | -------- | -------- | -------- | -------- |
1447  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的MimeType的回调函数。 |
1448
1449**示例:**
1450
1451  ```js
1452  downloadTask.queryMimeType((err, data)=>{
1453      if(err) {
1454          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
1455      } else {
1456          console.info('Download task queried. data:' + JSON.stringify(data));
1457      }
1458  });
1459  ```
1460
1461
1462### pause<sup>(deprecated)</sup>
1463
1464pause(): Promise&lt;void&gt;
1465
1466暂停下载任务,异步方法,使用promise形式返回结果。
1467
1468>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9)替代。
1469
1470**需要权限**:ohos.permission.INTERNET
1471
1472**系统能力**: SystemCapability.MiscServices.Download
1473
1474**返回值:**
1475
1476  | 类型 | 说明 |
1477  | -------- | -------- |
1478  | Promise&lt;void&gt; | 暂停下载任务是否成功。 |
1479
1480**示例:**
1481
1482  ```js
1483  downloadTask.pause().then((result) => {
1484      if (result) {
1485           console.info('Download task paused. ');
1486      } else {
1487          console.error('Failed to pause the download task. Cause:' + JSON.stringify(result));
1488      }
1489  }).catch((err) => {
1490      console.error('Failed to pause the download task. Cause:' + JSON.stringify(err));
1491  });
1492  ```
1493
1494
1495### pause<sup>(deprecated)</sup>
1496
1497pause(callback: AsyncCallback&lt;void&gt;): void
1498
1499>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9-1)替代。
1500
1501暂停下载任务,异步方法,使用callback形式返回结果。
1502
1503**需要权限**:ohos.permission.INTERNET
1504
1505**系统能力**: SystemCapability.MiscServices.Download
1506
1507**参数:**
1508
1509  | 参数名 | 类型 | 必填 | 说明 |
1510  | -------- | -------- | -------- | -------- |
1511  | callback | AsyncCallback&lt;void&gt; | 是 | 暂停下载任务的回调函数。 |
1512
1513**示例:**
1514
1515  ```js
1516  downloadTask.pause((err, result)=>{
1517      if(err) {
1518          console.error('Failed to pause the download task. Cause:' + JSON.stringify(err));
1519          return;
1520      }
1521      if (result) {
1522           console.info('Download task paused. ');
1523      } else {
1524          console.error('Failed to pause the download task. Cause:' + JSON.stringify(result));
1525      }
1526  });
1527  ```
1528
1529
1530### resume<sup>(deprecated)</sup>
1531
1532resume(): Promise&lt;void&gt;
1533
1534重新启动暂停的下载任务,异步方法,使用promise形式返回结果。
1535
1536>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9)替代。
1537
1538**需要权限**:ohos.permission.INTERNET
1539
1540**系统能力**: SystemCapability.MiscServices.Download
1541
1542**返回值:**
1543
1544  | 类型 | 说明 |
1545  | -------- | -------- |
1546  | Promise&lt;void&gt; | 重新启动暂停的下载任务是否成功。 |
1547
1548**示例:**
1549
1550  ```js
1551  downloadTask.resume().then((result) => {
1552      if (result) {
1553          console.info('Download task resumed.')
1554      } else {
1555          console.error('Failed to resume the download task. ');
1556      }
1557      console.info('Download task resumed.')
1558  }).catch((err) => {
1559      console.error('Failed to resume the download task. Cause:' + err);
1560  });
1561  ```
1562
1563
1564### resume<sup>(deprecated)</sup>
1565
1566resume(callback: AsyncCallback&lt;void&gt;): void
1567
1568>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9-1)替代。
1569
1570重新启动暂停的下载任务,异步方法,使用callback形式返回结果。
1571
1572**需要权限**:ohos.permission.INTERNET
1573
1574**系统能力**: SystemCapability.MiscServices.Download
1575
1576**参数:**
1577
1578  | 参数名 | 类型 | 必填 | 说明 |
1579  | -------- | -------- | -------- | -------- |
1580  | callback | AsyncCallback&lt;void&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
1581
1582**示例:**
1583
1584  ```js
1585  downloadTask.resume((err, result)=>{
1586      if (err) {
1587          console.error('Failed to resume the download task. Cause:' + err);
1588          return;
1589      }
1590      if (result) {
1591          console.info('Download task resumed.');
1592      } else {
1593          console.error('Failed to resume the download task.');
1594      }
1595  });
1596  ```
1597
1598
1599## DownloadConfig
1600下载任务的配置信息。
1601
1602**需要权限**:ohos.permission.INTERNET
1603
1604**系统能力**: SystemCapability.MiscServices.Download
1605
1606| 名称 | 类型 | 必填 | 说明 |
1607| -------- | -------- | -------- | -------- |
1608| url | string | 是 | 资源地址。 |
1609| header | Object | 否 | 添加要包含在下载请求中的HTTPS标志头。<br/>开发者可以通过header的X-TLS-Version参数指定需要使用的TLS版本(如果不指定,则默认使用CURL_SSLVERSION_TLSv1_2版本,指定则使用指定版本。)<br/>CURL_SSLVERSION_TLSv1_0<br/>CURL_SSLVERSION_TLSv1_1<br/>CURL_SSLVERSION_TLSv1_2<br/>CURL_SSLVERSION_TLSv1_3<br/>通过header的X-Cipher-List参数指定需要使用的密码套件(如果不指定,则默认使用安全密码套件,指定则使用指定密码套件。)<br/>-1.2允许使用的密码套件白名单:<br/>TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,<br/>TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_DSS_RSA_WITH_AES_256_GCM_SHA384,<br/>TLS_PSK_WITH_AES_256_GCM_SHA384,TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,<br/>TLS_DHE_PSK_WITH_AES_256_GCM_SHA384,TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256,<br/>TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,<br/>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,<br/>TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256,<br/>TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256,TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384,<br/>TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_CCM,<br/>TLS_DHE_RSA_WITH_AES_256_CCM,TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256,<br/>TLS_PSK_WITH_AES_256_CCM,TLS_DHE_PSK_WITH_AES_128_CCM,<br/>TLS_DHE_PSK_WITH_AES_256_CCM,TLS_ECDHE_ECDSA_WITH_AES_128_CCM,<br/>TLS_ECDHE_ECDSA_WITH_AES_256_CCM,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256<br/>-1.3允许使用的密码套件白名单:<br/>TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_CCM_SHA256<br/>-1.3新增国密算法套:<br/>TLS_SM4_GCM_SM3,TLS_SM4_CCM_SM3 |
1610| enableMetered | boolean | 否 | 设置是否允许在按流量计费的连接下下载(默认使用false)。Wi-Fi为非计费网络,数据流量为计费网络。<br/>-&nbsp;true:是<br/>-&nbsp;false:否 |
1611| enableRoaming | boolean | 否 | 设置是否允许在漫游网络中下载(默认使用false)。 <br/>-&nbsp;true:是<br/>-&nbsp;false:否|
1612| description | string | 否 | 设置下载会话的描述。 |
1613| filePath<sup>7+</sup> | string | 否 | 设置下载路径。<br/>-&nbsp;FA模型下使用[context](js-apis-inner-app-context.md#contextgetcachedir) 获取应用存储路径,比如:\'${featureAbility.getContext().getFilesDir()}/test.txt\',并将文件存储在此路径下。<br/>-&nbsp;Stage模型下使用[AbilityContext](js-apis-inner-application-context.md) 类获取文件路径,比如:\'${globalThis.abilityContext.tempDir}/test.txt\'并将文件存储在此路径下。 |
1614| networkType | number | 否 | 设置允许下载的网络类型(默认使用NETWORK_MOBILE&NETWORK_WIFI)。<br/>-&nbsp;NETWORK_MOBILE:0x00000001<br/>-&nbsp;NETWORK_WIFI:0x00010000|
1615| title | string | 否 | 设置下载任务名称。 |
1616| background<sup>9+</sup> | boolean | 否 | 后台任务通知开关,开启后可在通知中显示下载状态(默认使用false)。 |
1617
1618
1619## DownloadInfo<sup>7+</sup>
1620下载任务信息,[getTaskInfo<sup>9+</sup>](#gettaskinfo9)接口的回调参数。
1621
1622**需要权限**:ohos.permission.INTERNET
1623
1624**系统能力**: SystemCapability.MiscServices.Download
1625
1626| 名称 | 类型 | 说明 |
1627| -------- | ------ |---------------- |
1628| downloadId | number | 下载任务ID。 |
1629| failedReason | number | 下载失败原因,可以是任何[下载任务的错误码](#下载任务的错误码)常量。 |
1630| fileName | string | 下载的文件名。 |
1631| filePath | string | 存储文件的URI。 |
1632| pausedReason | number | 会话暂停的原因,可以是任何[下载任务暂停原因](#下载任务暂停原因)常量。 |
1633| status | number | 下载状态码,可以是任何[下载任务状态码](#下载任务状态码)常量。 |
1634| targetURI | string | 下载文件的URI。 |
1635| downloadTitle | string | 下载任务名称。 |
1636| downloadTotalBytes | number | 下载的文件的总大小(int&nbsp;bytes)。 |
1637| description | string | 待下载任务的描述信息。 |
1638| downloadedBytes | number | 实时下载大小(int&nbsp;&nbsp;bytes)。 |
1639<!--no_check-->