js-apis-request.md 58.7 KB
Newer Older
1
# @ohos.request (上传下载)
A
修改  
anyueling 已提交
2

A
anyueling 已提交
3
request部件主要给应用提供上传下载文件、后台传输代理的基础能力。
A
修改  
anyueling 已提交
4

Z
zengyawen 已提交
5 6 7 8 9 10 11
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块


Z
zengyawen 已提交
12
```js
Z
zengyawen 已提交
13 14 15 16 17
import request from '@ohos.request';
```


## 限制与约束
A
anyueling 已提交
18

19 20
上传目前仅支持HTTP请求,不支持HTTPS。

21
下载服务器需要支持HTTP协议的head方法,能够通过Content-length获取下载数据大小,否则下载任务失败,可通过[on('fail')<sup>7+</sup>)](#onfail7)查看失败原因。
Z
zengyawen 已提交
22 23 24 25 26 27 28

## 常量

**需要权限**:ohos.permission.INTERNET

**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download。

29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
### 网络类型
下载支持自定义网络类型,可以在[DownloadConfig](#downloadconfig)中通过networkType配置成以下网络类型。

| 名称 | 参数类型 | 数值 | 说明 |
| -------- | -------- | -------- | -------- |
| NETWORK_MOBILE | number | 0x00000001 | 使用蜂窝网络时允许下载的位标志。 |
| NETWORK_WIFI | number | 0x00010000 | 使用WLAN时允许下载的位标志。 |

### 下载任务的错误码
下载相关[on('fail')<sup>7+</sup>](#onfail7)/[off('fail')<sup>7+</sup>](#offfail7)/[getTaskInfo<sup>9+</sup>](#gettaskinfo9)接口可能返回的错误码。

| 名称 | 参数类型 | 数值 | 说明 |
| -------- | -------- | -------- | -------- |
| ERROR_CANNOT_RESUME<sup>7+</sup> | number |   0   | 网络原因导致恢复下载失败。 |
| ERROR_DEVICE_NOT_FOUND<sup>7+</sup> | number |   1   | 找不到SD卡等存储设备。 |
| ERROR_FILE_ALREADY_EXISTS<sup>7+</sup> | number |   2   | 要下载的文件已存在,下载会话不能覆盖现有文件。 |
| ERROR_FILE_ERROR<sup>7+</sup> | number |   3   | 文件操作失败。 |
| ERROR_HTTP_DATA_ERROR<sup>7+</sup> | number |   4   | HTTP传输失败。 |
| ERROR_INSUFFICIENT_SPACE<sup>7+</sup> | number |   5   | 存储空间不足。 |
| ERROR_TOO_MANY_REDIRECTS<sup>7+</sup> | number |   6   | 网络重定向过多导致的错误。 |
| ERROR_UNHANDLED_HTTP_CODE<sup>7+</sup> | number |   7   | 无法识别的HTTP代码。 |
| ERROR_UNKNOWN<sup>7+</sup> | number |   8   | 未知错误。 |
| ERROR_OFFLINE<sup>9+</sup> | number |   9   | 网络未连接。 |
| ERROR_UNSUPPORTED_NETWORK_TYPE<sup>9+</sup> | number |   10   | 网络类型不匹配。 |


### 下载任务暂停原因
下载相关[getTaskInfo<sup>9+</sup>](#gettaskinfo9)接口可能返回的任务暂停原因

| 名称 | 参数类型 | 数值 | 说明 |
| -------- | -------- | -------- | -------- |
| PAUSED_QUEUED_FOR_WIFI<sup>7+</sup> | number |   0   | 下载被暂停并等待WLAN连接,因为文件大小超过了使用蜂窝网络的会话允许的最大值。 |
| PAUSED_WAITING_FOR_NETWORK<sup>7+</sup> | number |   1   | 由于网络问题(例如网络断开)而暂停下载。 |
| PAUSED_WAITING_TO_RETRY<sup>7+</sup> | number |   2   | 发生网络错误,将重试下载会话。 |
| PAUSED_BY_USER<sup>9+</sup> | number |   3   | 用户暂停会话。 |
| PAUSED_UNKNOWN<sup>7+</sup> | number |   4   | 未知原因导致暂停下载。 |

### 下载任务状态码
下载相关[getTaskInfo<sup>9+</sup>](#gettaskinfo9)接口可能返回的任务状态码

| 名称 | 参数类型 | 数值 | 说明 |
| -------- | -------- | -------- | -------- |
| SESSION_SUCCESSFUL<sup>7+</sup> | number |   0   | 下载会话已完成。 |
| SESSION_RUNNING<sup>7+</sup> | number |   1   | 下载会话正在进行中。 |
| SESSION_PENDING<sup>7+</sup> | number |   2   | 正在调度下载会话。 |
| SESSION_PAUSED<sup>7+</sup> | number |   3   | 下载会话已暂停。 |
| SESSION_FAILED<sup>7+</sup> | number |   4   | 下载会话已失败,将不会重试。 |
Z
zengyawen 已提交
76 77


A
anyueling 已提交
78
## request.uploadFile<sup>9+</sup>
Z
zengyawen 已提交
79

A
anyueling 已提交
80
uploadFile(context: BaseContext, config: UploadConfig): Promise&lt;UploadTask&gt;
Z
zengyawen 已提交
81

82
上传,异步方法,使用promise形式返回结果。通过[on('complete'|'fail')<sup>9+</sup>](#oncomplete--fail9)可获取任务上传时的错误信息。
Z
zengyawen 已提交
83 84 85 86 87

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

88 89 90
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
91
  | -------- | -------- | -------- | -------- |
92
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
Z
zengyawen 已提交
93
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
Z
zengyawen 已提交
94

A
anyueling 已提交
95

96 97 98
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
99
  | -------- | -------- |
Z
zengyawen 已提交
100
  | Promise&lt;[UploadTask](#uploadtask)&gt; | 返回上传任务。 |
Z
zengyawen 已提交
101

A
anyueling 已提交
102 103 104 105 106 107 108
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400002 | Bad file path. |

109
**示例:**
A
anyueling 已提交
110

111
  ```js
112
  let uploadTask;
A
anyueling 已提交
113 114 115 116 117 118 119
  let uploadConfig = {
    url: 'https://patch',
    header: { key1: "value1", key2: "value2" },
    method: "POST",
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
  };
120 121
  try {
    request.uploadFile(globalThis.abilityContext, uploadConfig).then((data) => {
Z
zengyawen 已提交
122
      uploadTask = data;
123 124 125 126 127 128
    }).catch((err) => {
        console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
    });
  } catch (err) {
    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
  }
Z
zengyawen 已提交
129 130 131
  ```


A
anyueling 已提交
132
## request.uploadFile<sup>9+</sup>
Z
zengyawen 已提交
133

A
anyueling 已提交
134
uploadFile(context: BaseContext, config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
Z
zengyawen 已提交
135

136
上传,异步方法,使用callback形式返回结果。通过[on('complete'|'fail')<sup>9+</sup>](#oncomplete--fail9)可获取任务上传时的错误信息。
Z
zengyawen 已提交
137 138 139 140 141

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

142 143
**参数:**

144
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
145
  | -------- | -------- | -------- | -------- |
146
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
Z
zengyawen 已提交
147
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
148
  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 是 | 回调函数,异步返回UploadTask对象。 |
Z
zengyawen 已提交
149

A
anyueling 已提交
150 151 152 153 154 155 156
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400002 | Bad file path. |

157
**示例:**
A
anyueling 已提交
158

159
  ```js
160
  let uploadTask;
A
anyueling 已提交
161 162 163 164 165 166 167
  let uploadConfig = {
    url: 'https://patch',
    header: { key1: "value1", key2: "value2" },
    method: "POST",
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
  };
168 169
  try {
    request.uploadFile(globalThis.abilityContext, uploadConfig, (err, data) => {
Z
zengyawen 已提交
170 171 172 173 174
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
175 176 177 178
    });
  } catch (err) {
    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
  }
Z
zengyawen 已提交
179
  ```
A
anyueling 已提交
180

A
anyueling 已提交
181 182 183
## request.upload<sup>(deprecated)</sup>

upload(config: UploadConfig): Promise&lt;UploadTask&gt;
A
anyueling 已提交
184 185 186

上传,异步方法,使用promise形式返回结果。

A
anyueling 已提交
187 188 189
**模型约束**:此接口仅可在FA模型下使用

>  **说明:** 从API Version 9开始不再维护,建议使用[request.uploadFile<sup>9+</sup>](#requestuploadfile9)替代。
190

A
anyueling 已提交
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |

**返回值:**

  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;[UploadTask](#uploadtask)&gt; | 返回上传任务。 |

**示例:**
A
anyueling 已提交
208

A
anyueling 已提交
209 210 211 212 213 214
  ```js
  let uploadTask;
  let uploadConfig = {
    url: 'https://patch',
    header: { key1: "value1", key2: "value2" },
    method: "POST",
A
anyueling 已提交
215 216
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
A
anyueling 已提交
217
  };
A
anyueling 已提交
218
  request.upload(uploadConfig).then((data) => {
A
anyueling 已提交
219 220 221
      uploadTask = data;
  }).catch((err) => {
      console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
A
anyueling 已提交
222
  })
A
anyueling 已提交
223 224 225
  ```


A
anyueling 已提交
226
## request.upload<sup>(deprecated)</sup>
A
anyueling 已提交
227

A
anyueling 已提交
228
upload(config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
A
anyueling 已提交
229 230 231

上传,异步方法,使用callback形式返回结果。

A
anyueling 已提交
232 233 234
**模型约束**:此接口仅可在FA模型下使用

>  **说明:** 从API Version 9开始不再维护,建议使用[request.uploadFile<sup>9+</sup>](#requestuploadfile9-1)替代。
235

A
anyueling 已提交
236 237 238 239 240
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**参数:**
Z
zengyawen 已提交
241

242
  | 参数名 | 类型 | 必填 | 说明 |
A
anyueling 已提交
243 244
  | -------- | -------- | -------- | -------- |
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
245
  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 是 | 回调函数,异步返回UploadTask对象。 |
A
anyueling 已提交
246 247

**示例:**
A
anyueling 已提交
248

A
anyueling 已提交
249 250 251 252 253 254 255 256 257
  ```js
  let uploadTask;
  let uploadConfig = {
    url: 'https://patch',
    header: { key1: "value1", key2: "value2" },
    method: "POST",
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
  };
A
anyueling 已提交
258
  request.upload(uploadConfig, (err, data) => {
A
anyueling 已提交
259 260 261 262 263 264 265
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```
Z
zengyawen 已提交
266

A
anyueling 已提交
267
## request.upload<sup>(deprecated)</sup>
268

A
anyueling 已提交
269
upload(context: BaseContext, config: UploadConfig): Promise&lt;UploadTask&gt;
270 271 272

上传,异步方法,使用promise形式返回结果。

A
anyueling 已提交
273 274
>  **说明:** 从API Version 9开始支持,从API Version 9开始不再维护,建议使用[request.uploadFile<sup>9+</sup>](#requestuploadfile9)替代。

275 276 277 278 279 280
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**参数:**

A
anyueling 已提交
281
  | 参数名 | 类型 | 必填 | 说明 |
282
  | -------- | -------- | -------- | -------- |
283
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
284 285
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
  
286 287 288

**返回值:**

A
anyueling 已提交
289
  | 类型 | 说明 |
290
  | -------- | -------- |
A
anyueling 已提交
291
  | Promise&lt;[UploadTask](#uploadtask)&gt; | 返回上传任务。 |
292 293 294 295 296 297 298 299 300

**示例:**

  ```js
  let uploadTask;
  let uploadConfig = {
    url: 'https://patch',
    header: { key1: "value1", key2: "value2" },
    method: "POST",
A
anyueling 已提交
301 302
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
303
  };
A
anyueling 已提交
304
  request.upload(globalThis.abilityContext, uploadConfig).then((data) => {
305 306 307 308 309 310 311
      uploadTask = data;
  }).catch((err) => {
      console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
  });
  ```


A
anyueling 已提交
312
## request.upload<sup>(deprecated)</sup>
313

A
anyueling 已提交
314
upload(context: BaseContext, config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
315 316 317

上传,异步方法,使用callback形式返回结果。

A
anyueling 已提交
318 319
>  **说明:** 从API Version 9开始支持,从API Version 9开始不再维护,建议使用[request.uploadFile<sup>9+</sup>](#requestuploadfile9-1)替代。

320 321 322 323 324 325
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**参数:**

A
anyueling 已提交
326
  | 参数名 | 类型 | 必填 | 说明 |
327
  | -------- | -------- | -------- | -------- |
328
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
329 330
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 是 | 回调函数,异步返回UploadTask对象。 |
331 332 333 334 335 336 337 338 339 340 341 342

**示例:**

  ```js
  let uploadTask;
  let uploadConfig = {
    url: 'https://patch',
    header: { key1: "value1", key2: "value2" },
    method: "POST",
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
  };
A
anyueling 已提交
343
  request.upload(globalThis.abilityContext, uploadConfig, (err, data) => {
344 345 346 347 348 349 350 351
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```

Z
zengyawen 已提交
352 353 354 355 356 357 358
## UploadTask

上传任务,使用下列方法前,需要先获取UploadTask对象。


### on('progress')

Z
zengyawen 已提交
359
on(type: 'progress', callback:(uploadedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
360 361 362 363 364 365 366

开启上传任务监听,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

367 368 369
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
370
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
371 372
  | type | string | 是 | 订阅的事件类型,取值为'progress'(上传的进度信息)。 |
  | callback | function | 是 | 上传进度的回调函数。 |
Z
zengyawen 已提交
373

374
  回调函数的参数
Z
zengyawen 已提交
375

376 377
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
378 379
| uploadedSize | number | 是 | 当前已上传文件大小,单位为bit。 |
| totalSize | number | 是 | 上传文件的总大小,单位为bit。 |
Z
zengyawen 已提交
380

381
**示例:**
A
anyueling 已提交
382

383
  ```js
Z
zengyawen 已提交
384
  uploadTask.on('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
385 386
      console.info("upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize);
  }
Z
zengyawen 已提交
387
  );
Z
zengyawen 已提交
388 389 390 391 392
  ```


### on('headerReceive')<sup>7+</sup>

Z
zengyawen 已提交
393
on(type: 'headerReceive', callback:  (header: object) =&gt; void): void
Z
zengyawen 已提交
394 395 396 397 398 399 400

开启上传任务监听,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

401 402 403
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
404
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
405
  | type | string | 是 | 订阅的事件类型,取值为'headerReceive'(接收响应头)。 |
Z
zengyawen 已提交
406
  | callback | function | 是 | HTTP&nbsp;Response&nbsp;Header事件的回调函数。 |
Z
zengyawen 已提交
407 408 409

  回调函数的参数:

410 411 412
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
413

414
**示例:**
A
anyueling 已提交
415

416
  ```js
Z
zengyawen 已提交
417
  uploadTask.on('headerReceive', function callback(headers){   
Z
zengyawen 已提交
418 419
      console.info("upOnHeader headers:" + JSON.stringify(headers));
  }
Z
zengyawen 已提交
420
  );
Z
zengyawen 已提交
421 422 423
  ```


A
修改  
anyueling 已提交
424
### on('complete' | 'fail')<sup>9+</sup>
A
anyueling 已提交
425 426 427 428 429 430 431 432 433 434 435 436 437 438

 on(type:'complete' | 'fail', callback: Callback&lt;Array&lt;TaskState&gt;&gt;): void;

开启上传任务监听,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 订阅的事件类型,取值为'complete',表示上传任务完成;取值为'fail',表示上传任务失败。|
439
  | callback | Callback&lt;Array&lt;TaskState&gt;&gt; | 是 | 上传任务完成或失败的回调函数。 |
A
anyueling 已提交
440 441 442 443 444

  回调函数的参数

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
修改  
anyueling 已提交
445
| taskstates | Array&lt;[TaskState](#taskstate9)&gt; | 是 | 上传任务返回结果 |
A
anyueling 已提交
446 447

**示例:**
A
anyueling 已提交
448

A
anyueling 已提交
449
  ```js
A
修改  
anyueling 已提交
450 451 452
  uploadTask.on('complete', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnComplete taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
453 454 455 456
    }
  }
  );

A
修改  
anyueling 已提交
457 458 459
  uploadTask.on('fail', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnFail taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
460 461 462 463 464 465
    }
  }
  );
  ```


Z
zengyawen 已提交
466 467
### off('progress')

Z
zengyawen 已提交
468
off(type:  'progress',  callback?: (uploadedSize: number, totalSize: number) =&gt;  void): void
Z
zengyawen 已提交
469 470 471 472 473 474 475

关闭上传任务监听,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

476 477
**参数:**

478
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
479
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
480 481
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(上传的进度信息)。 |
  | callback | function | 否 | 上传任务的回调函数。 |
Z
zengyawen 已提交
482 483 484

  回调函数的参数:

485 486
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
487 488
| uploadedSize | number | 是 | 当前已上传文件的大小,单位为bit。 |
| totalSize | number | 是 | 上传文件的总大小,单位为bit。 |
Z
zengyawen 已提交
489

490
**示例:**
A
anyueling 已提交
491

492
  ```js
Z
zengyawen 已提交
493
  uploadTask.off('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
494 495
      console.info('uploadedSize: ' + uploadedSize, 'totalSize: ' + totalSize);
  }
Z
zengyawen 已提交
496
  );
Z
zengyawen 已提交
497 498 499 500 501
  ```


### off('headerReceive')<sup>7+</sup>

Z
zengyawen 已提交
502
off(type: 'headerReceive', callback?: (header: object) =&gt; void): void
Z
zengyawen 已提交
503 504 505 506 507 508 509

关闭上传任务监听,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

510 511
**参数:**

512
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
513
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
514
  | type | string | 是 | 取消订阅的事件类型,取值为'headerReceive'(接收响应头)。 |
Z
zengyawen 已提交
515
  | callback | function | 否 | HTTP&nbsp;Response&nbsp;Header事件的回调函数。 |
Z
zengyawen 已提交
516 517 518

  回调函数的参数:

519 520 521
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
522

523
**示例:**
A
anyueling 已提交
524

525
  ```js
Z
zengyawen 已提交
526
  uploadTask.off('headerReceive', function callback(headers) {
Z
zengyawen 已提交
527 528
      console.info("upOnHeader headers:" + JSON.stringify(headers));
  }
Z
zengyawen 已提交
529
  );
Z
zengyawen 已提交
530 531
  ```

A
修改  
anyueling 已提交
532
### off('complete' | 'fail')<sup>9+</sup>
A
anyueling 已提交
533

A
anyueling 已提交
534
 off(type:'complete' | 'fail', callback?: Callback&lt;Array&lt;TaskState&gt;&gt;): void;
A
anyueling 已提交
535

A
修改  
anyueling 已提交
536
关闭上传任务监听,异步方法,使用callback形式返回结果。
A
anyueling 已提交
537 538 539 540 541 542 543 544 545 546

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 订阅的事件类型,取值为'complete',表示上传任务完成;取值为'fail',表示上传任务失败。|
547
  | callback | Callback&lt;Array&lt;TaskState&gt;&gt; | 否 | 上传任务完成或失败的回调函数。 |
A
anyueling 已提交
548 549 550 551 552

  回调函数的参数

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
修改  
anyueling 已提交
553
| taskstates | Array&lt;[TaskState](#taskstate9)&gt; | 是 | 上传任务返回结果 |
A
anyueling 已提交
554 555

**示例:**
A
anyueling 已提交
556

A
anyueling 已提交
557
  ```js
A
修改  
anyueling 已提交
558 559 560
  uploadTask.off('complete', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnComplete taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
561 562 563
    }
  }
  );
A
anyueling 已提交
564

A
修改  
anyueling 已提交
565 566 567
  uploadTask.off('fail', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnFail taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
568 569 570
    }
  }
  );
A
anyueling 已提交
571 572
  ```

A
anyueling 已提交
573 574
### delete<sup>9+</sup>
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
575 576 577 578 579 580 581

移除上传的任务,异步方法,使用promise形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

582 583 584
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
585
  | -------- | -------- |
Z
zengyawen 已提交
586
  | Promise&lt;boolean&gt; | 移除任务是否成功。true:成功,false:不成功。 |
Z
zengyawen 已提交
587

588
**示例:**
A
anyueling 已提交
589

590
  ```js
A
anyueling 已提交
591
  uploadTask.delete().then((result) => {
Z
zengyawen 已提交
592 593 594 595 596 597 598 599 600 601 602
      if (result) {
          console.info('Upload task removed successfully. ');
      } else {
          console.error('Failed to remove the upload task. ');
      }
  }).catch((err) => {
      console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err));
  });
  ```


A
anyueling 已提交
603
### delete<sup>9+</sup>
Z
zengyawen 已提交
604

A
anyueling 已提交
605
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
606 607 608 609 610 611 612

移除上传的任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

613 614
**参数:**

615
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
616
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
617
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务的回调函数。 |
Z
zengyawen 已提交
618

619
**示例:**
A
anyueling 已提交
620

621
  ```js
A
anyueling 已提交
622
  uploadTask.delete((err, result) => {
Z
zengyawen 已提交
623 624 625 626 627 628 629 630 631 632 633 634 635
      if (err) {
          console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err));
          return;
      }
      if (result) {
          console.info('Upload task removed successfully.');
      } else {
          console.error('Failed to remove the upload task.');
      }
  });
  ```


A
anyueling 已提交
636
### remove<sup>(deprecated)</sup>
637

A
anyueling 已提交
638
remove(): Promise&lt;boolean&gt;
639 640 641

移除上传的任务,异步方法,使用promise形式返回结果。

A
anyueling 已提交
642 643
>  **说明:** 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9)替代。

644 645 646 647 648 649
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**返回值:**

A
anyueling 已提交
650
  | 类型 | 说明 |
651
  | -------- | -------- |
A
anyueling 已提交
652
  | Promise&lt;boolean&gt; | 移除任务是否成功。true:成功,false:不成功。 |
653 654 655 656

**示例:**

  ```js
A
anyueling 已提交
657
  uploadTask.remove().then((result) => {
658 659 660 661 662 663 664 665 666 667 668
      if (result) {
          console.info('Upload task removed successfully. ');
      } else {
          console.error('Failed to remove the upload task. ');
      }
  }).catch((err) => {
      console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err));
  });
  ```


A
anyueling 已提交
669
### remove<sup>(deprecated)</sup>
670

A
anyueling 已提交
671
remove(callback: AsyncCallback&lt;boolean&gt;): void
672 673 674

移除上传的任务,异步方法,使用callback形式返回结果。

A
anyueling 已提交
675 676
>  **说明:** 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9-1)替代。

677 678 679 680 681 682
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Upload

**参数:**

A
anyueling 已提交
683
  | 参数名 | 类型 | 必填 | 说明 |
684
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
685
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务的回调函数。 |
686 687 688 689

**示例:**

  ```js
A
anyueling 已提交
690
  uploadTask.remove((err, result) => {
691 692 693 694 695 696 697 698 699 700 701 702
      if (err) {
          console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err));
          return;
      }
      if (result) {
          console.info('Upload task removed successfully.');
      } else {
          console.error('Failed to remove the upload task.');
      }
  });
  ```

Z
zengyawen 已提交
703
## UploadConfig
704
上传任务的配置信息。
Z
zengyawen 已提交
705

A
anyueling 已提交
706 707
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
708 709
**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Upload。

Z
zengyawen 已提交
710
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
711
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
712
| url | string | 是 | 资源地址。 |
713
| header | Object | 是 | 添加要包含在上传请求中的HTTP或HTTPS标志头。 |
714
| method | string | 是 | 请求方法:POST、PUT。缺省为POST。 |
Z
zengyawen 已提交
715
| files | Array&lt;[File](#file)&gt; | 是 | 要上传的文件列表。请使用&nbsp;multipart/form-data提交。 |
716
| data | Array&lt;[RequestData](#requestdata)&gt; | 是 | 请求的表单数据。 |
Z
zengyawen 已提交
717

A
修改  
anyueling 已提交
718
## TaskState<sup>9+</sup>
A
anyueling 已提交
719

720 721
上传任务信息,[on('complete' | 'fail')<sup>9+</sup>](#oncomplete--fail9)[off('complete' | 'fail')<sup>9+</sup>](#offcomplete--fail9)接口的回调参数。

A
anyueling 已提交
722 723 724 725 726 727 728 729 730
**需要权限**:ohos.permission.INTERNET

**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Upload。

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| path | string | 是 | 文件路径 |
| responseCode | number | 是 | 上传任务返回值 |
| message | string | 是 | 上传任务结果描述信息 |
Z
zengyawen 已提交
731 732

## File
733
[UploadConfig](#uploadconfig)中的文件列表。
Z
zengyawen 已提交
734

A
anyueling 已提交
735 736
**需要权限**:ohos.permission.INTERNET

A
anyueling 已提交
737
**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download。
Z
zengyawen 已提交
738

Z
zengyawen 已提交
739
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
740
| -------- | -------- | -------- | -------- |
741 742
| filename | string | 是 | multipart提交时,请求头中的文件名。 |
| name | string | 是 | multipart提交时,表单项目的名称,缺省为file。 |
743
| uri | string | 是 | 文件的本地存储路径。<br/>仅支持“internal”协议类型,“internal://cache/”为必填字段,示例:<br/>internal://cache/path/to/file.txt |
744
| type | string | 是 | 文件的内容类型,默认根据文件名或路径的后缀获取。 |
Z
zengyawen 已提交
745 746 747


## RequestData
748
[UploadConfig](#uploadconfig)中的表单数据。
Z
zengyawen 已提交
749

A
anyueling 已提交
750
**需要权限**:ohos.permission.INTERNET
Z
zengyawen 已提交
751

A
anyueling 已提交
752
**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download。
753

Z
zengyawen 已提交
754
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
755
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
756 757
| name | string | 是 | 表示表单元素的名称。 |
| value | string | 是 | 表示表单元素的值。 |
Z
zengyawen 已提交
758

A
anyueling 已提交
759
## request.downloadFile<sup>9+</sup>
Z
zengyawen 已提交
760

A
anyueling 已提交
761
downloadFile(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
Z
zengyawen 已提交
762

763
下载,异步方法,使用promise形式返回结果。通过[on('complete'|'pause'|'remove')<sup>7+</sup>](#oncompletepauseremove7)可获取任务下载时的状态信息,包括任务完成、暂停或移除。通过[on('fail')<sup>7+</sup>](#onfail7)可获取任务下载时的错误信息。
Z
zengyawen 已提交
764 765 766 767 768

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

769 770 771
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
772
  | -------- | -------- | -------- | -------- |
773
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
Z
zengyawen 已提交
774
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
Z
zengyawen 已提交
775

776 777 778
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
779
  | -------- | -------- |
Z
zengyawen 已提交
780
  | Promise&lt;[DownloadTask](#downloadtask)&gt; | 返回下载任务。 |
Z
zengyawen 已提交
781

A
anyueling 已提交
782 783 784 785 786 787 788 789 790
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400001 | File operation error. |
  | 13400002 | Bad file path. |
  | 13400003 | Task manager service error. |

791
**示例:**
A
anyueling 已提交
792

793
  ```js
794
  let downloadTask;
795 796 797 798 799 800 801 802 803
  try {
    request.downloadFile(globalThis.abilityContext, { url: 'https://xxxx/xxxx.hap' }).then((data) => {
        downloadTask = data;
    }).catch((err) => {
        console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
    })
  } catch (err) {
    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
  }
Z
zengyawen 已提交
804 805 806
  ```


A
anyueling 已提交
807
## request.downloadFile<sup>9+</sup>
Z
zengyawen 已提交
808

A
anyueling 已提交
809
downloadFile(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
Z
zengyawen 已提交
810

811
下载,异步方法,使用callback形式返回结果。通过[on('complete'|'pause'|'remove')<sup>7+</sup>](#oncompletepauseremove7)可获取任务下载时的状态信息,包括任务完成、暂停或移除。通过[on('fail')<sup>7+</sup>](#onfail7)可获取任务下载时的错误信息。
Z
zengyawen 已提交
812 813 814 815 816

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

817 818
**参数:**

819
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
820
  | -------- | -------- | -------- | -------- |
821
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
Z
zengyawen 已提交
822
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
823
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
Z
zengyawen 已提交
824

A
anyueling 已提交
825 826 827 828 829 830 831 832 833
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

  | 错误码ID | 错误信息 |
  | -------- | -------- |
  | 13400001 | File operation error. |
  | 13400002 | Bad file path. |
  | 13400003 | Task manager service error. |

834
**示例:**
A
anyueling 已提交
835

836
  ```js
837
  let downloadTask;
838 839 840 841 842 843 844 845 846 847 848 849
  try {
    request.downloadFile(globalThis.abilityContext, { url: 'https://xxxx/xxxxx.hap', 
    filePath: 'xxx/xxxxx.hap'}, (err, data) => {
        if (err) {
            console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
            return;
        }
        downloadTask = data;
    });
  } catch (err) {
    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
  }
Z
zengyawen 已提交
850 851
  ```

A
anyueling 已提交
852
## request.download<sup>(deprecated)</sup>
A
anyueling 已提交
853

A
anyueling 已提交
854
download(config: DownloadConfig): Promise&lt;DownloadTask&gt;
A
anyueling 已提交
855 856 857

下载,异步方法,使用promise形式返回结果。

A
anyueling 已提交
858 859 860
>  **说明:** 从API Version 9开始不再维护,建议使用[request.downloadFile<sup>9+</sup>](#requestdownloadfile9)替代。

**模型约束**:此接口仅可在FA模型下使用
861

A
anyueling 已提交
862 863 864 865 866 867 868 869 870 871 872 873 874 875 876
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |

**返回值:**

  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;[DownloadTask](#downloadtask)&gt; | 返回下载任务。 |
Z
zengyawen 已提交
877

A
anyueling 已提交
878
**示例:**
A
anyueling 已提交
879

A
anyueling 已提交
880 881
  ```js
  let downloadTask;
A
anyueling 已提交
882
  request.download({ url: 'https://xxxx/xxxx.hap' }).then((data) => {
A
anyueling 已提交
883 884 885 886 887 888 889
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


A
anyueling 已提交
890
## request.download<sup>(deprecated)</sup>
A
anyueling 已提交
891

A
anyueling 已提交
892
download(config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void
A
anyueling 已提交
893 894 895

下载,异步方法,使用callback形式返回结果。

A
anyueling 已提交
896 897 898
>  **说明:** 从API Version 9开始不再维护,建议使用[request.downloadFile<sup>9+</sup>](#requestdownloadfile9-1)替代。

**模型约束**:此接口仅可在FA模型下使用
899

A
anyueling 已提交
900 901 902 903 904 905
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

906
  | 参数名 | 类型 | 必填 | 说明 |
A
anyueling 已提交
907 908
  | -------- | -------- | -------- | -------- |
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
909
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
A
anyueling 已提交
910 911

**示例:**
A
anyueling 已提交
912

A
anyueling 已提交
913 914
  ```js
  let downloadTask;
A
anyueling 已提交
915
  request.download({ url: 'https://xxxx/xxxxx.hap', 
A
anyueling 已提交
916 917 918 919 920 921 922 923
  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
      if (err) {
          console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
          return;
      }
      downloadTask = data;
  });
  ```
924

A
anyueling 已提交
925
## request.download<sup>(deprecated)</sup>
926

A
anyueling 已提交
927
download(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
928 929 930

下载,异步方法,使用promise形式返回结果。

A
anyueling 已提交
931 932
>  **说明:** 从API Version 9开始支持,从API Version 9开始不再维护,建议使用[request.downloadFile<sup>9+</sup>](#requestdownloadfile9)替代。

933 934 935 936 937 938
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

A
anyueling 已提交
939
  | 参数名 | 类型 | 必填 | 说明 |
940
  | -------- | -------- | -------- | -------- |
941
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
942
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
943 944 945

**返回值:**

A
anyueling 已提交
946
  | 类型 | 说明 |
947
  | -------- | -------- |
A
anyueling 已提交
948
  | Promise&lt;[DownloadTask](#downloadtask)&gt; | 返回下载任务。 |
949 950 951 952 953

**示例:**

  ```js
  let downloadTask;
A
anyueling 已提交
954
  request.download(globalThis.abilityContext, { url: 'https://xxxx/xxxx.hap' }).then((data) => {
955 956 957 958 959 960 961
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


A
anyueling 已提交
962
## request.download<sup>(deprecated)</sup>
963

A
anyueling 已提交
964
download(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
965 966 967

下载,异步方法,使用callback形式返回结果。

A
anyueling 已提交
968 969
>  **说明:** 从API Version 9开始支持,从API Version 9开始不再维护,建议使用[request.downloadFile<sup>9+</sup>](#requestdownloadfile9-1)替代。

970 971 972 973 974 975
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

A
anyueling 已提交
976
  | 参数名 | 类型 | 必填 | 说明 |
977
  | -------- | -------- | -------- | -------- |
978
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
979 980
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
981 982 983 984 985

**示例:**

  ```js
  let downloadTask;
A
anyueling 已提交
986
  request.download(globalThis.abilityContext, { url: 'https://xxxx/xxxxx.hap', 
987 988 989 990 991 992 993 994 995 996
  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
      if (err) {
          console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
          return;
      }
      downloadTask = data;
  });
  ```


Z
zengyawen 已提交
997 998 999 1000 1001 1002 1003
## DownloadTask

下载任务。


### on('progress')

Z
zengyawen 已提交
1004
on(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
1005 1006 1007 1008 1009 1010 1011

开启下载任务监听,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1012 1013 1014
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1015
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1016 1017
  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 是 | 下载的回调函数。 |
Z
zengyawen 已提交
1018 1019 1020

  回调函数的参数:

1021 1022
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
1023 1024
| receivedSize | number | 是 | 当前下载的进度,单位为bit。 |
| totalSize | number | 是 | 下载文件的总大小,单位为bit。 |
Z
zengyawen 已提交
1025

1026
**示例:**
A
anyueling 已提交
1027

1028
  ```js
1029
  downloadTask.on('progress', function download_callback(receivedSize, totalSize) {
Z
zengyawen 已提交
1030 1031
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
1032
  );
Z
zengyawen 已提交
1033 1034 1035 1036 1037
  ```


### off('progress')

Z
zengyawen 已提交
1038
off(type: 'progress', callback?: (receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
1039 1040 1041 1042 1043 1044 1045

关闭下载任务监听,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1046 1047
**参数:**

1048
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1049
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1050 1051
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 否 | 下载任务的回调函数。 |
Z
zengyawen 已提交
1052 1053 1054

  回调函数的参数:

1055 1056
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
1057 1058
| receivedSize | number | 是 | 当前下载的进度,单位为bit。 |
| totalSize | number | 是 | 下载文件的总大小,单位为bit。 |
Z
zengyawen 已提交
1059

1060
**示例:**
A
anyueling 已提交
1061

1062
  ```js
1063 1064 1065
  downloadTask .off('progress', function download_callback(receivedSize, totalSize) {
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
1066
  );
Z
zengyawen 已提交
1067 1068 1069
  ```


Z
zengyawen 已提交
1070
### on('complete'|'pause'|'remove')<sup>7+</sup>
Z
zengyawen 已提交
1071

Z
zengyawen 已提交
1072
on(type: 'complete'|'pause'|'remove', callback:() =&gt; void): void
Z
zengyawen 已提交
1073

Z
zengyawen 已提交
1074
开启下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
1075 1076 1077 1078 1079

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1080 1081 1082
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1083
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1084 1085
  | type | string | 是 | 订阅的事件类型。<br>- 取值为'complete',表示下载任务完成;<br/>- 取值为'pause',表示下载任务暂停;<br/>- 取值为'remove',表示下载任务移除。 |
  | callback | function | 是 | 回调函数。 |
Z
zengyawen 已提交
1086

1087
**示例:**
A
anyueling 已提交
1088

1089
  ```js
1090 1091 1092
  downloadTask.on('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
1093
  );
Z
zengyawen 已提交
1094 1095 1096
  ```


Z
zengyawen 已提交
1097
### off('complete'|'pause'|'remove')<sup>7+</sup>
Z
zengyawen 已提交
1098

Z
zengyawen 已提交
1099
off(type: 'complete'|'pause'|'remove', callback?:() =&gt; void): void
Z
zengyawen 已提交
1100

Z
zengyawen 已提交
1101
取消下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
1102 1103 1104 1105 1106

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1107 1108 1109
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1110
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1111 1112
  | type | string | 是 | 取消订阅的事件类型。<br/>- 取值为'complete',表示下载任务完成;<br/>- 取值为'pause',表示下载任务暂停;<br/>- 取值为'remove',表示下载任务移除。 |
  | callback | function | 否 | 回调函数。 |
Z
zengyawen 已提交
1113

1114
**示例:**
A
anyueling 已提交
1115

1116
  ```js
1117 1118 1119
  downloadTask.off('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
1120
  );
Z
zengyawen 已提交
1121 1122 1123 1124 1125
  ```


### on('fail')<sup>7+</sup>

Z
zengyawen 已提交
1126
on(type: 'fail', callback: (err: number) =&gt; void): void
Z
zengyawen 已提交
1127 1128 1129 1130 1131 1132 1133

开启下载任务失败监听,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1134 1135 1136
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1137
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1138 1139
  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 是 | 下载失败的回调函数。 |
Z
zengyawen 已提交
1140 1141 1142

  回调函数的参数:

1143 1144
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
1145
| err | number | 是 | 下载失败的错误码,错误原因见[下载任务的错误码](#下载任务的错误码)。 |
Z
zengyawen 已提交
1146

1147
**示例:**
A
anyueling 已提交
1148

1149
  ```js 
1150 1151 1152
  downloadTask.on('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  }
Z
zengyawen 已提交
1153
  );
Z
zengyawen 已提交
1154 1155 1156 1157 1158
  ```


### off('fail')<sup>7+</sup>

Z
zengyawen 已提交
1159
off(type: 'fail', callback?: (err: number) =&gt; void): void
Z
zengyawen 已提交
1160 1161 1162 1163 1164 1165 1166

取消下载任务失败监听,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1167 1168 1169
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1170
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1171 1172
  | type | string | 是 | 取消订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 否 | 取消下载失败的回调函数。 |
Z
zengyawen 已提交
1173 1174 1175

  回调函数的参数

1176 1177
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
1178
| err | number | 是 | 下载失败的错误码。错误原因见[下载任务的错误码](#下载任务的错误码)。 |
Z
zengyawen 已提交
1179

1180
**示例:**
A
anyueling 已提交
1181

1182
  ```js
1183 1184 1185
  downloadTask.off('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  } 
Z
zengyawen 已提交
1186
  );
Z
zengyawen 已提交
1187 1188
  ```

1189
### delete<sup>9+</sup>
Z
zengyawen 已提交
1190

A
anyueling 已提交
1191
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1192 1193 1194 1195 1196 1197 1198

移除下载的任务,异步方法,使用promise形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1199 1200 1201
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
1202
  | -------- | -------- |
Z
zengyawen 已提交
1203
  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
Z
zengyawen 已提交
1204

1205
**示例:**
A
anyueling 已提交
1206

1207
  ```js
A
anyueling 已提交
1208
  downloadTask.delete().then((result) => {
Z
zengyawen 已提交
1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219
      if (result) {
          console.info('Download task removed.');
      } else {
          console.error('Failed to remove the download task.');
      }
  }).catch ((err) => {
      console.error('Failed to remove the download task.');
  });
  ```


A
anyueling 已提交
1220
### delete<sup>9+</sup>
Z
zengyawen 已提交
1221

A
anyueling 已提交
1222
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
1223 1224 1225 1226 1227 1228 1229

移除下载的任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1230 1231
**参数:**

1232
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1233
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1234
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
Z
zengyawen 已提交
1235

1236
**示例:**
A
anyueling 已提交
1237

1238
  ```js
A
anyueling 已提交
1239
  downloadTask.delete((err, result)=>{
Z
zengyawen 已提交
1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252
      if(err) {
          console.error('Failed to remove the download task.');
          return;
      } 
      if (result) {
          console.info('Download task removed.');
      } else {
          console.error('Failed to remove the download task.');
      } 
  });
  ```


A
anyueling 已提交
1253
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1254

A
anyueling 已提交
1255
getTaskInfo(): Promise&lt;DownloadInfo&gt;
Z
zengyawen 已提交
1256 1257 1258 1259 1260 1261 1262

查询下载任务,异步方法,使用promise形式返回DownloadInfo里的信息。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1263 1264 1265
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
1266
  | -------- | -------- |
Z
zengyawen 已提交
1267
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
Z
zengyawen 已提交
1268

1269
**示例:**
A
anyueling 已提交
1270

1271
  ```js
A
anyueling 已提交
1272
  downloadTask.getTaskInfo().then((downloadInfo) => {    
Z
zengyawen 已提交
1273
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
Z
zengyawen 已提交
1274 1275 1276 1277 1278 1279
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


A
anyueling 已提交
1280
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1281

A
anyueling 已提交
1282
getTaskInfo(callback: AsyncCallback&lt;DownloadInfo&gt;): void
Z
zengyawen 已提交
1283 1284 1285 1286 1287 1288 1289

查询下载的任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1290 1291
**参数:**

1292
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1293
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1294
  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
Z
zengyawen 已提交
1295

1296
**示例:**
A
anyueling 已提交
1297

1298
  ```js
A
anyueling 已提交
1299
  downloadTask.getTaskInfo((err, downloadInfo)=>{
Z
zengyawen 已提交
1300 1301 1302 1303 1304 1305 1306 1307 1308
      if(err) {
          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
      } else {
          console.info('download query success. data:'+ JSON.stringify(downloadInfo));
      }
  });
  ```


A
anyueling 已提交
1309
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1310

A
anyueling 已提交
1311
getTaskMimeType(): Promise&lt;string&gt;
Z
zengyawen 已提交
1312 1313 1314 1315 1316 1317 1318

查询下载的任务的 MimeType,异步方法,使用promise形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1319 1320 1321
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
1322
  | -------- | -------- |
Z
zengyawen 已提交
1323
  | Promise&lt;string&gt; | 查询下载任务的MimeType。 |
Z
zengyawen 已提交
1324

1325
**示例:**
A
anyueling 已提交
1326

1327
  ```js
A
anyueling 已提交
1328
  downloadTask.getTaskMimeType().then((data) => {    
Z
zengyawen 已提交
1329 1330 1331 1332 1333 1334 1335
      console.info('Download task queried. Data:' + JSON.stringify(data));
  }).catch((err) => {
      console.error('Failed to query the download MimeType. Cause:' + JSON.stringify(err))
  });
  ```


A
anyueling 已提交
1336
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1337

A
anyueling 已提交
1338
getTaskMimeType(callback: AsyncCallback&lt;string&gt;): void;
Z
zengyawen 已提交
1339 1340 1341 1342 1343 1344 1345

查询下载的任务的 MimeType,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1346 1347
**参数:**

1348
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1349
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1350
  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的MimeType的回调函数。 |
Z
zengyawen 已提交
1351

1352
**示例:**
A
anyueling 已提交
1353

1354
  ```js
A
anyueling 已提交
1355
  downloadTask.getTaskMimeType((err, data)=>{
Z
zengyawen 已提交
1356 1357 1358 1359 1360 1361 1362 1363 1364
      if(err) {
          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
      } else {
          console.info('Download task queried. data:' + JSON.stringify(data));
      }
  });
  ```


A
anyueling 已提交
1365
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1366

A
anyueling 已提交
1367
suspend(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1368 1369 1370 1371 1372 1373 1374

暂停下载任务,异步方法,使用promise形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1375 1376 1377
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
1378
  | -------- | -------- |
A
anyueling 已提交
1379
  | Promise&lt;boolean&gt; | 暂停下载任务是否成功。 |
Z
zengyawen 已提交
1380

1381
**示例:**
A
anyueling 已提交
1382

1383
  ```js
A
anyueling 已提交
1384
  downloadTask.suspend().then((result) => {    
Z
zengyawen 已提交
1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395
      if (result) {
           console.info('Download task paused. ');
      } else {
          console.error('Failed to pause the download task. Cause:' + JSON.stringify(result));
      }
  }).catch((err) => {
      console.error('Failed to pause the download task. Cause:' + JSON.stringify(err));
  });
  ```


A
anyueling 已提交
1396
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1397

A
anyueling 已提交
1398
suspend(callback: AsyncCallback&lt;boolean&gt;): void
1399

Z
zengyawen 已提交
1400 1401 1402 1403 1404 1405
暂停下载任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1406 1407
**参数:**

1408
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1409
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1410
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 暂停下载任务的回调函数。 |
Z
zengyawen 已提交
1411

1412
**示例:**
A
anyueling 已提交
1413

1414
  ```js
A
anyueling 已提交
1415
  downloadTask.suspend((err, result)=>{
Z
zengyawen 已提交
1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428
      if(err) {
          console.error('Failed to pause the download task. Cause:' + JSON.stringify(err));
          return;
      }
      if (result) {
           console.info('Download task paused. ');
      } else {
          console.error('Failed to pause the download task. Cause:' + JSON.stringify(result));
      }
  });
  ```


A
anyueling 已提交
1429
### restore<sup>9+</sup>
Z
zengyawen 已提交
1430

A
anyueling 已提交
1431
restore(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1432 1433 1434 1435 1436 1437 1438

重新启动暂停的下载任务,异步方法,使用promise形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1439
**返回值:**
1440 1441

  | 类型 | 说明 |
Z
zengyawen 已提交
1442
  | -------- | -------- |
A
anyueling 已提交
1443
  | Promise&lt;boolean&gt; | 重新启动暂停的下载任务是否成功。 |
Z
zengyawen 已提交
1444

1445
**示例:**
A
anyueling 已提交
1446

1447
  ```js
A
anyueling 已提交
1448
  downloadTask.restore().then((result) => {
Z
zengyawen 已提交
1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460
      if (result) {
          console.info('Download task resumed.')
      } else {
          console.error('Failed to resume the download task. ');
      }
      console.info('Download task resumed.')
  }).catch((err) => {
      console.error('Failed to resume the download task. Cause:' + err);
  });
  ```


A
anyueling 已提交
1461
### restore<sup>9+</sup>
Z
zengyawen 已提交
1462

A
anyueling 已提交
1463
restore(callback: AsyncCallback&lt;boolean&gt;): void
1464

Z
zengyawen 已提交
1465 1466 1467 1468 1469 1470
重新启动暂停的下载任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1471 1472
**参数:**

1473
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1474
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1475
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
Z
zengyawen 已提交
1476

1477
**示例:**
A
anyueling 已提交
1478

1479
  ```js
A
anyueling 已提交
1480
  downloadTask.restore((err, result)=>{
Z
zengyawen 已提交
1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493
      if (err) {
          console.error('Failed to resume the download task. Cause:' + err);
          return;
      } 
      if (result) {
          console.info('Download task resumed.');
      } else {
          console.error('Failed to resume the download task.');
      }
  });
  ```


1494

A
anyueling 已提交
1495 1496 1497
### remove<sup>(deprecated)</sup>

remove(): Promise&lt;boolean&gt;
1498 1499 1500

移除下载的任务,异步方法,使用promise形式返回结果。

A
anyueling 已提交
1501 1502
>  **说明:** 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9-2)替代。

1503 1504 1505 1506 1507 1508
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**返回值:**

A
anyueling 已提交
1509
  | 类型 | 说明 |
1510
  | -------- | -------- |
A
anyueling 已提交
1511
  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
1512 1513 1514 1515

**示例:**

  ```js
A
anyueling 已提交
1516
  downloadTask.remove().then((result) => {
1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527
      if (result) {
          console.info('Download task removed.');
      } else {
          console.error('Failed to remove the download task.');
      }
  }).catch ((err) => {
      console.error('Failed to remove the download task.');
  });
  ```


A
anyueling 已提交
1528
### remove<sup>(deprecated)</sup>
1529

A
anyueling 已提交
1530
remove(callback: AsyncCallback&lt;boolean&gt;): void
1531 1532 1533

移除下载的任务,异步方法,使用callback形式返回结果。

A
anyueling 已提交
1534 1535
>  **说明:** 从API Version 9开始不再维护,建议使用[delete<sup>9+</sup>](#delete9-3)替代。

1536 1537 1538 1539 1540 1541
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

A
anyueling 已提交
1542
  | 参数名 | 类型 | 必填 | 说明 |
1543
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1544
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
1545 1546 1547 1548

**示例:**

  ```js
A
anyueling 已提交
1549
  downloadTask.remove((err, result)=>{
1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562
      if(err) {
          console.error('Failed to remove the download task.');
          return;
      } 
      if (result) {
          console.info('Download task removed.');
      } else {
          console.error('Failed to remove the download task.');
      } 
  });
  ```


A
anyueling 已提交
1563
### query<sup>(deprecated)</sup>
1564

A
anyueling 已提交
1565
query(): Promise&lt;DownloadInfo&gt;
1566 1567 1568

查询下载任务,异步方法,使用promise形式返回DownloadInfo里的信息。

A
anyueling 已提交
1569 1570
>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskInfo<sup>9+</sup>](#gettaskinfo9)替代。

1571 1572 1573 1574
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1575 1576
**返回值:**

A
anyueling 已提交
1577 1578 1579
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
1580 1581 1582 1583

**示例:**

  ```js
A
anyueling 已提交
1584
  downloadTask.query().then((downloadInfo) => {    
1585 1586 1587 1588 1589 1590 1591
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


A
anyueling 已提交
1592
### query<sup>(deprecated)</sup>
1593

A
anyueling 已提交
1594
query(callback: AsyncCallback&lt;DownloadInfo&gt;): void
1595 1596 1597

查询下载的任务,异步方法,使用callback形式返回结果。

A
anyueling 已提交
1598 1599
>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskInfo<sup>9+</sup>](#gettaskinfo9-1)替代。

1600 1601 1602 1603 1604 1605
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

A
anyueling 已提交
1606
  | 参数名 | 类型 | 必填 | 说明 |
1607
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1608
  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
1609 1610 1611 1612

**示例:**

  ```js
A
anyueling 已提交
1613
  downloadTask.query((err, downloadInfo)=>{
1614 1615 1616 1617 1618 1619 1620 1621 1622
      if(err) {
          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
      } else {
          console.info('download query success. data:'+ JSON.stringify(downloadInfo));
      }
  });
  ```


A
anyueling 已提交
1623
### queryMimeType<sup>(deprecated)</sup>
1624

A
anyueling 已提交
1625
queryMimeType(): Promise&lt;string&gt;
1626 1627 1628

查询下载的任务的 MimeType,异步方法,使用promise形式返回结果。

A
anyueling 已提交
1629 1630
>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskMimeType<sup>9+</sup>](#gettaskmimetype9)替代。

1631 1632 1633 1634 1635 1636
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**返回值:**

A
anyueling 已提交
1637
  | 类型 | 说明 |
1638
  | -------- | -------- |
A
anyueling 已提交
1639
  | Promise&lt;string&gt; | 查询下载任务的MimeType。 |
1640 1641 1642 1643

**示例:**

  ```js
A
anyueling 已提交
1644
  downloadTask.queryMimeType().then((data) => {    
1645 1646 1647 1648 1649 1650 1651
      console.info('Download task queried. Data:' + JSON.stringify(data));
  }).catch((err) => {
      console.error('Failed to query the download MimeType. Cause:' + JSON.stringify(err))
  });
  ```


A
anyueling 已提交
1652
### queryMimeType<sup>(deprecated)</sup>
1653

A
anyueling 已提交
1654
queryMimeType(callback: AsyncCallback&lt;string&gt;): void;
1655 1656 1657

查询下载的任务的 MimeType,异步方法,使用callback形式返回结果。

A
anyueling 已提交
1658 1659
>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[getTaskMimeType<sup>9+</sup>](#gettaskmimetype9-1)替代。

1660 1661 1662 1663 1664 1665
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

A
anyueling 已提交
1666
  | 参数名 | 类型 | 必填 | 说明 |
1667
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1668
  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的MimeType的回调函数。 |
1669 1670 1671 1672

**示例:**

  ```js
A
anyueling 已提交
1673
  downloadTask.queryMimeType((err, data)=>{
1674 1675 1676 1677 1678 1679 1680 1681 1682
      if(err) {
          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
      } else {
          console.info('Download task queried. data:' + JSON.stringify(data));
      }
  });
  ```


A
anyueling 已提交
1683
### pause<sup>(deprecated)</sup>
1684

A
anyueling 已提交
1685
pause(): Promise&lt;void&gt;
1686 1687 1688

暂停下载任务,异步方法,使用promise形式返回结果。

A
anyueling 已提交
1689 1690
>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9)替代。

1691 1692 1693 1694 1695 1696
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**返回值:**

A
anyueling 已提交
1697
  | 类型 | 说明 |
1698
  | -------- | -------- |
A
anyueling 已提交
1699
  | Promise&lt;void&gt; | 暂停下载任务是否成功。 |
1700 1701 1702 1703

**示例:**

  ```js
A
anyueling 已提交
1704
  downloadTask.pause().then((result) => {    
1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715
      if (result) {
           console.info('Download task paused. ');
      } else {
          console.error('Failed to pause the download task. Cause:' + JSON.stringify(result));
      }
  }).catch((err) => {
      console.error('Failed to pause the download task. Cause:' + JSON.stringify(err));
  });
  ```


A
anyueling 已提交
1716
### pause<sup>(deprecated)</sup>
1717

A
anyueling 已提交
1718 1719 1720
pause(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9-1)替代。
1721 1722 1723 1724 1725 1726 1727 1728 1729

暂停下载任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

A
anyueling 已提交
1730
  | 参数名 | 类型 | 必填 | 说明 |
1731
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1732
  | callback | AsyncCallback&lt;void&gt; | 是 | 暂停下载任务的回调函数。 |
1733 1734 1735 1736

**示例:**

  ```js
A
anyueling 已提交
1737
  downloadTask.pause((err, result)=>{
1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750
      if(err) {
          console.error('Failed to pause the download task. Cause:' + JSON.stringify(err));
          return;
      }
      if (result) {
           console.info('Download task paused. ');
      } else {
          console.error('Failed to pause the download task. Cause:' + JSON.stringify(result));
      }
  });
  ```


A
anyueling 已提交
1751
### resume<sup>(deprecated)</sup>
1752

A
anyueling 已提交
1753
resume(): Promise&lt;void&gt;
1754 1755 1756

重新启动暂停的下载任务,异步方法,使用promise形式返回结果。

A
anyueling 已提交
1757 1758
>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9)替代。

1759 1760 1761 1762
**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

1763
**返回值:**
1764

A
anyueling 已提交
1765
  | 类型 | 说明 |
1766
  | -------- | -------- |
A
anyueling 已提交
1767
  | Promise&lt;void&gt; | 重新启动暂停的下载任务是否成功。 |
1768 1769 1770 1771

**示例:**

  ```js
A
anyueling 已提交
1772
  downloadTask.resume().then((result) => {
1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784
      if (result) {
          console.info('Download task resumed.')
      } else {
          console.error('Failed to resume the download task. ');
      }
      console.info('Download task resumed.')
  }).catch((err) => {
      console.error('Failed to resume the download task. Cause:' + err);
  });
  ```


A
anyueling 已提交
1785
### resume<sup>(deprecated)</sup>
1786

A
anyueling 已提交
1787 1788 1789
resume(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9-1)替代。
1790 1791 1792 1793 1794 1795 1796 1797 1798

重新启动暂停的下载任务,异步方法,使用callback形式返回结果。

**需要权限**:ohos.permission.INTERNET

**系统能力**: SystemCapability.MiscServices.Download

**参数:**

A
anyueling 已提交
1799
  | 参数名 | 类型 | 必填 | 说明 |
1800
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1801
  | callback | AsyncCallback&lt;void&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
1802 1803 1804 1805

**示例:**

  ```js
A
anyueling 已提交
1806
  downloadTask.resume((err, result)=>{
1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819
      if (err) {
          console.error('Failed to resume the download task. Cause:' + err);
          return;
      } 
      if (result) {
          console.info('Download task resumed.');
      } else {
          console.error('Failed to resume the download task.');
      }
  });
  ```


Z
zengyawen 已提交
1820
## DownloadConfig
1821
下载任务的配置信息。
Z
zengyawen 已提交
1822

A
anyueling 已提交
1823 1824
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1825 1826 1827 1828 1829
**系统能力**: SystemCapability.MiscServices.Download

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| url | string | 是 | 资源地址。 |
1830
| 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 |
A
anyueling 已提交
1831 1832
| enableMetered | boolean | 否 | 设置是否允许在按流量计费的连接下下载。<br/>-&nbsp;true:是<br/>-&nbsp;false:否 |
| enableRoaming | boolean | 否 | 设置是否允许在漫游网络中下载。 <br/>-&nbsp;true:是<br/>-&nbsp;false:否|
Z
zengyawen 已提交
1833
| description | string | 否 | 设置下载会话的描述。 |
1834
| 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'并将文件存储在此路径下。|
A
anyueling 已提交
1835
| networkType | number | 否 | 设置允许下载的网络类型。<br/>-&nbsp;NETWORK_MOBILE:0x00000001<br/>-&nbsp;NETWORK_WIFI:0x00010000|
1836
| title | string | 否 | 设置下载任务名称。 |
1837
| background<sup>9+</sup> | boolean | 否 | 后台任务通知开关,开启后可在通知中显示下载状态。 |
Z
zengyawen 已提交
1838 1839


Z
zengyawen 已提交
1840
## DownloadInfo<sup>7+</sup>
1841
下载任务信息,[query<sup>(deprecated)</sup>](#querydeprecated-1)接口的回调参数。
Z
zengyawen 已提交
1842

A
anyueling 已提交
1843 1844
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1845 1846
**系统能力**: SystemCapability.MiscServices.Download

Z
zengyawen 已提交
1847
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1848
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1849
| downloadId | number | 是 | 下载的文件ID。 |
1850
| failedReason | number | 否 | 下载失败原因,可以是任何[下载任务的错误码](#下载任务的错误码)常量。 |
Z
zengyawen 已提交
1851 1852
| fileName | string | 是 | 下载的文件名。 |
| filePath | string | 是 | 存储文件的URI。 |
1853 1854
| pausedReason | number | 否 | 会话暂停的原因,可以是任何[下载任务暂停原因](#下载任务暂停原因)常量。 |
| status | number | 是 | 下载状态码,可以是任何[下载任务状态码](#下载任务状态码)常量。 |
Z
zengyawen 已提交
1855
| targetURI | string | 是 | 下载文件的URI。 |
1856
| downloadTitle | string | 是 | 下载任务名称。 |
Z
zengyawen 已提交
1857 1858
| downloadTotalBytes | number | 是 | 下载的文件的总大小(int&nbsp;bytes)。 |
| description | string | 是 | 待下载文件的描述信息。 |
1859
| downloadedBytes | number | 是 | 实时下载大小(int&nbsp;&nbsp;bytes)。 |