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