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

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

5 6
> **说明:**
>
Z
zengyawen 已提交
7 8 9 10 11 12
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块


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


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

A
anyueling 已提交
20
在开发FA模型下的应用程序时, 默认支持https,如果要支持http,需要在config.json里增加network标签,属性标识 "cleartextTraffic": true。即:
A
anyueling 已提交
21

A
anyueling 已提交
22
```js
23
var config = {
Z
zengyawen 已提交
24 25 26
  "deviceConfig": {
    "default": {
      "network": {
A
anyueling 已提交
27
        "cleartextTraffic": true
Z
zengyawen 已提交
28
      }
29
      //...
Z
zengyawen 已提交
30
    }
Z
zengyawen 已提交
31
  }
32
}
Z
zengyawen 已提交
33
```
A
anyueling 已提交
34

A
anyueling 已提交
35
在开发stage模型下的应用程序时,不涉及属性标识 "cleartextTraffic"。
A
anyueling 已提交
36

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

A
anyueling 已提交
39
上传目前仅支持HTTP请求,不支持HTTPS。
Z
zengyawen 已提交
40 41 42 43 44 45 46

## 常量

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

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

A
anyueling 已提交
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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
### 网络类型
下载支持自定义网络类型,可以在[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 已提交
94 95


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

A
anyueling 已提交
98
uploadFile(context: BaseContext, config: UploadConfig): Promise&lt;UploadTask&gt;
Z
zengyawen 已提交
99 100 101 102 103 104 105

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

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

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

106 107 108
**参数:**

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

A
anyueling 已提交
113

114 115 116
**返回值:**

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

A
anyueling 已提交
120 121 122 123 124 125 126
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

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

127
**示例:**
A
anyueling 已提交
128

129
  ```js
130
  let uploadTask;
A
anyueling 已提交
131
  let uploadConfig = {
A
anyueling 已提交
132
    url: 'http://patch',
A
anyueling 已提交
133 134 135 136 137
    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 已提交
138 139
  try {
    request.uploadFile(globalThis.abilityContext, uploadConfig).then((data) => {
Z
zengyawen 已提交
140
      uploadTask = data;
A
anyueling 已提交
141 142 143 144 145 146
    }).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 已提交
147 148 149
  ```


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

A
anyueling 已提交
152
uploadFile(context: BaseContext, config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
Z
zengyawen 已提交
153 154 155 156 157 158 159

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

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

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

160 161
**参数:**

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

A
anyueling 已提交
168 169 170 171 172 173 174
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

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

175
**示例:**
A
anyueling 已提交
176

177
  ```js
178
  let uploadTask;
A
anyueling 已提交
179
  let uploadConfig = {
A
anyueling 已提交
180
    url: 'http://patch',
A
anyueling 已提交
181 182 183 184 185
    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 已提交
186 187
  try {
    request.uploadFile(globalThis.abilityContext, uploadConfig, (err, data) => {
Z
zengyawen 已提交
188 189 190 191 192
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
A
anyueling 已提交
193 194 195 196
    });
  } catch (err) {
    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
  }
Z
zengyawen 已提交
197
  ```
A
anyueling 已提交
198

A
anyueling 已提交
199 200 201
## request.upload<sup>(deprecated)</sup>

upload(config: UploadConfig): Promise&lt;UploadTask&gt;
A
anyueling 已提交
202 203 204

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

A
anyueling 已提交
205 206 207
**模型约束**:此接口仅可在FA模型下使用

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

A
anyueling 已提交
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
**需要权限**:ohos.permission.INTERNET

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

**参数:**

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

**返回值:**

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

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

A
anyueling 已提交
227 228 229
  ```js
  let uploadTask;
  let uploadConfig = {
A
anyueling 已提交
230
    url: 'http://patch',
A
anyueling 已提交
231 232
    header: { key1: "value1", key2: "value2" },
    method: "POST",
A
anyueling 已提交
233 234
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
A
anyueling 已提交
235
  };
A
anyueling 已提交
236
  request.upload(uploadConfig).then((data) => {
A
anyueling 已提交
237 238 239
      uploadTask = data;
  }).catch((err) => {
      console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
A
anyueling 已提交
240
  })
A
anyueling 已提交
241 242 243
  ```


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

A
anyueling 已提交
246
upload(config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
A
anyueling 已提交
247 248 249

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

A
anyueling 已提交
250 251 252
**模型约束**:此接口仅可在FA模型下使用

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

A
anyueling 已提交
254 255 256 257 258
**需要权限**:ohos.permission.INTERNET

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

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

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

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

A
anyueling 已提交
267 268 269
  ```js
  let uploadTask;
  let uploadConfig = {
A
anyueling 已提交
270
    url: 'http://patch',
A
anyueling 已提交
271 272 273 274 275
    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 已提交
276
  request.upload(uploadConfig, (err, data) => {
A
anyueling 已提交
277 278 279 280 281 282 283
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```
Z
zengyawen 已提交
284

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

A
anyueling 已提交
287
upload(context: BaseContext, config: UploadConfig): Promise&lt;UploadTask&gt;
288 289 290

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

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

293 294 295 296 297 298
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
299
  | 参数名 | 类型 | 必填 | 说明 |
300
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
301
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
302 303
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
  
304 305 306

**返回值:**

A
anyueling 已提交
307
  | 类型 | 说明 |
308
  | -------- | -------- |
A
anyueling 已提交
309
  | Promise&lt;[UploadTask](#uploadtask)&gt; | 返回上传任务。 |
310 311 312 313 314 315

**示例:**

  ```js
  let uploadTask;
  let uploadConfig = {
A
anyueling 已提交
316
    url: 'http://patch',
317 318
    header: { key1: "value1", key2: "value2" },
    method: "POST",
A
anyueling 已提交
319 320
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
321
  };
A
anyueling 已提交
322
  request.upload(globalThis.abilityContext, uploadConfig).then((data) => {
323 324 325 326 327 328 329
      uploadTask = data;
  }).catch((err) => {
      console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
  });
  ```


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

A
anyueling 已提交
332
upload(context: BaseContext, config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
333 334 335

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

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

338 339 340 341 342 343
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
344
  | 参数名 | 类型 | 必填 | 说明 |
345
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
346
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
347 348
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 是 | 回调函数,异步返回UploadTask对象。 |
349 350 351 352 353 354

**示例:**

  ```js
  let uploadTask;
  let uploadConfig = {
A
anyueling 已提交
355
    url: 'http://patch',
356 357 358 359 360
    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 已提交
361
  request.upload(globalThis.abilityContext, uploadConfig, (err, data) => {
362 363 364 365 366 367 368 369
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```

Z
zengyawen 已提交
370 371
## UploadTask

A
anyueling 已提交
372 373
上传任务,使用下列方法前,需要先获取UploadTask对象,promise形式通过[request.uploadFile<sup>9+</sup>](#requestuploadfile9)获取,callback形式通过[request.uploadFile<sup>9+</sup>](#requestuploadfile9-1)获取。

Z
zengyawen 已提交
374 375 376 377


### on('progress')

Z
zengyawen 已提交
378
on(type: 'progress', callback:(uploadedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
379 380 381 382 383 384 385

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

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

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

386 387 388
**参数:**

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

393
  回调函数的参数
Z
zengyawen 已提交
394

395 396
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
397 398
| uploadedSize | number | 是 | 当前已上传文件大小,单位为B。 |
| totalSize | number | 是 | 上传文件的总大小,单位为B。 |
Z
zengyawen 已提交
399

400
**示例:**
A
anyueling 已提交
401

402
  ```js
Z
zengyawen 已提交
403
  uploadTask.on('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
404 405
      console.info("upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize);
  }
Z
zengyawen 已提交
406
  );
Z
zengyawen 已提交
407 408 409 410 411
  ```


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

Z
zengyawen 已提交
412
on(type: 'headerReceive', callback:  (header: object) =&gt; void): void
Z
zengyawen 已提交
413 414 415 416 417 418 419

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

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

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

420 421 422
**参数:**

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

  回调函数的参数:

429 430 431
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
432

433
**示例:**
A
anyueling 已提交
434

435
  ```js
Z
zengyawen 已提交
436
  uploadTask.on('headerReceive', function callback(headers){   
Z
zengyawen 已提交
437 438
      console.info("upOnHeader headers:" + JSON.stringify(headers));
  }
Z
zengyawen 已提交
439
  );
Z
zengyawen 已提交
440 441 442
  ```


A
修改  
anyueling 已提交
443
### on('complete' | 'fail')<sup>9+</sup>
A
anyueling 已提交
444 445 446 447 448 449 450 451 452 453 454 455 456 457

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

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

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

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

**参数:**

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

  回调函数的参数

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

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

A
anyueling 已提交
468
  ```js
A
修改  
anyueling 已提交
469 470 471
  uploadTask.on('complete', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnComplete taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
472 473 474 475
    }
  }
  );

A
修改  
anyueling 已提交
476 477 478
  uploadTask.on('fail', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnFail taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
479 480 481 482 483 484
    }
  }
  );
  ```


Z
zengyawen 已提交
485 486
### off('progress')

Z
zengyawen 已提交
487
off(type:  'progress',  callback?: (uploadedSize: number, totalSize: number) =&gt;  void): void
Z
zengyawen 已提交
488 489 490 491 492 493 494

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

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

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

495 496
**参数:**

497
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
498
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
499 500
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(上传的进度信息)。 |
  | callback | function | 否 | 上传任务的回调函数。 |
Z
zengyawen 已提交
501 502 503

  回调函数的参数:

504 505
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
506 507
| uploadedSize | number | 是 | 当前已上传文件的大小,单位为B。 |
| totalSize | number | 是 | 上传文件的总大小,单位为B。 |
Z
zengyawen 已提交
508

509
**示例:**
A
anyueling 已提交
510

511
  ```js
Z
zengyawen 已提交
512
  uploadTask.off('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
513 514
      console.info('uploadedSize: ' + uploadedSize, 'totalSize: ' + totalSize);
  }
Z
zengyawen 已提交
515
  );
Z
zengyawen 已提交
516 517 518 519 520
  ```


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

Z
zengyawen 已提交
521
off(type: 'headerReceive', callback?: (header: object) =&gt; void): void
Z
zengyawen 已提交
522 523 524 525 526 527 528

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

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

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

529 530
**参数:**

531
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
532
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
533
  | type | string | 是 | 取消订阅的事件类型,取值为'headerReceive'(接收响应头)。 |
Z
zengyawen 已提交
534
  | callback | function | 否 | HTTP&nbsp;Response&nbsp;Header事件的回调函数。 |
Z
zengyawen 已提交
535 536 537

  回调函数的参数:

538 539 540
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
541

542
**示例:**
A
anyueling 已提交
543

544
  ```js
Z
zengyawen 已提交
545
  uploadTask.off('headerReceive', function callback(headers) {
Z
zengyawen 已提交
546 547
      console.info("upOnHeader headers:" + JSON.stringify(headers));
  }
Z
zengyawen 已提交
548
  );
Z
zengyawen 已提交
549 550
  ```

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

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

A
修改  
anyueling 已提交
555
关闭上传任务监听,异步方法,使用callback形式返回结果。
A
anyueling 已提交
556 557 558 559 560 561 562 563 564 565

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

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

**参数:**

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

  回调函数的参数

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

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

A
anyueling 已提交
576
  ```js
A
修改  
anyueling 已提交
577 578 579
  uploadTask.off('complete', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnComplete taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
580 581 582
    }
  }
  );
A
anyueling 已提交
583

A
修改  
anyueling 已提交
584 585 586
  uploadTask.off('fail', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnFail taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
587 588 589
    }
  }
  );
A
anyueling 已提交
590 591
  ```

A
anyueling 已提交
592 593
### delete<sup>9+</sup>
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
594 595 596 597 598 599 600

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

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

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

601 602 603
**返回值:**

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

607
**示例:**
A
anyueling 已提交
608

609
  ```js
A
anyueling 已提交
610
  uploadTask.delete().then((result) => {
Z
zengyawen 已提交
611 612 613 614 615 616 617 618 619 620 621
      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 已提交
622
### delete<sup>9+</sup>
Z
zengyawen 已提交
623

A
anyueling 已提交
624
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
625 626 627 628 629 630 631

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

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

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

632 633
**参数:**

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

638
**示例:**
A
anyueling 已提交
639

640
  ```js
A
anyueling 已提交
641
  uploadTask.delete((err, result) => {
Z
zengyawen 已提交
642 643 644 645 646 647 648 649 650 651 652 653 654
      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 已提交
655
### remove<sup>(deprecated)</sup>
656

A
anyueling 已提交
657
remove(): Promise&lt;boolean&gt;
658 659 660

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

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

663 664 665 666 667 668
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
669
  | 类型 | 说明 |
670
  | -------- | -------- |
A
anyueling 已提交
671
  | Promise&lt;boolean&gt; | 移除任务是否成功。true:成功,false:不成功。 |
672 673 674 675

**示例:**

  ```js
A
anyueling 已提交
676
  uploadTask.remove().then((result) => {
677 678 679 680 681 682 683 684 685 686 687
      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 已提交
688
### remove<sup>(deprecated)</sup>
689

A
anyueling 已提交
690
remove(callback: AsyncCallback&lt;boolean&gt;): void
691 692 693

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

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

696 697 698 699 700 701
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
702
  | 参数名 | 类型 | 必填 | 说明 |
703
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
704
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务的回调函数。 |
705 706 707 708

**示例:**

  ```js
A
anyueling 已提交
709
  uploadTask.remove((err, result) => {
710 711 712 713 714 715 716 717 718 719 720 721
      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 已提交
722 723
## UploadConfig

A
anyueling 已提交
724 725
**需要权限**:ohos.permission.INTERNET

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

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

A
修改  
anyueling 已提交
736
## TaskState<sup>9+</sup>
A
anyueling 已提交
737 738 739 740 741 742 743 744 745 746

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

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

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

## File

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

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

Z
zengyawen 已提交
754
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
755
| -------- | -------- | -------- | -------- |
756 757
| filename | string | 是 | multipart提交时,请求头中的文件名。 |
| name | string | 是 | multipart提交时,表单项目的名称,缺省为file。 |
Z
zengyawen 已提交
758
| uri | string | 是 | 文件的本地存储路径。<br/>支持“dataability”和“internal”两种协议类型,但“internal”仅支持临时目录,示例:<br/>dataability:///com.domainname.dataability.persondata/person/10/file.txt<br/>internal://cache/path/to/file.txt |
759
| type | string | 是 | 文件的内容类型,默认根据文件名或路径的后缀获取。 |
Z
zengyawen 已提交
760 761 762 763


## RequestData

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

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

Z
zengyawen 已提交
768
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
769
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
770 771
| name | string | 是 | 表示表单元素的名称。 |
| value | string | 是 | 表示表单元素的值。 |
Z
zengyawen 已提交
772

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

A
anyueling 已提交
775
downloadFile(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
Z
zengyawen 已提交
776 777 778 779 780 781 782

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

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

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

783 784 785
**参数:**

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

790 791 792
**返回值:**

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

A
anyueling 已提交
796 797 798 799 800 801 802 803 804
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

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

805
**示例:**
A
anyueling 已提交
806

807
  ```js
808
  let downloadTask;
A
anyueling 已提交
809 810 811 812 813 814 815 816 817
  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 已提交
818 819 820
  ```


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

A
anyueling 已提交
823
downloadFile(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
Z
zengyawen 已提交
824 825 826 827 828 829 830

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

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

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

831 832
**参数:**

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

A
anyueling 已提交
839 840 841 842 843 844 845 846 847
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

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

848
**示例:**
A
anyueling 已提交
849

850
  ```js
851
  let downloadTask;
A
anyueling 已提交
852 853 854 855 856 857 858 859 860 861 862 863
  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 已提交
864 865
  ```

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

A
anyueling 已提交
868
download(config: DownloadConfig): Promise&lt;DownloadTask&gt;
A
anyueling 已提交
869 870 871

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

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

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

A
anyueling 已提交
876 877 878 879 880 881 882 883 884 885 886 887 888 889 890
**需要权限**:ohos.permission.INTERNET

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

**参数:**

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

**返回值:**

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

A
anyueling 已提交
892
**示例:**
A
anyueling 已提交
893

A
anyueling 已提交
894 895
  ```js
  let downloadTask;
A
anyueling 已提交
896
  request.download({ url: 'https://xxxx/xxxx.hap' }).then((data) => {
A
anyueling 已提交
897 898 899 900 901 902 903
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


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

A
anyueling 已提交
906
download(config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void
A
anyueling 已提交
907 908 909

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

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

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

A
anyueling 已提交
914 915 916 917 918 919
**需要权限**:ohos.permission.INTERNET

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

**参数:**

920
  | 参数名 | 类型 | 必填 | 说明 |
A
anyueling 已提交
921 922
  | -------- | -------- | -------- | -------- |
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
923
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
A
anyueling 已提交
924 925

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

A
anyueling 已提交
927 928
  ```js
  let downloadTask;
A
anyueling 已提交
929
  request.download({ url: 'https://xxxx/xxxxx.hap', 
A
anyueling 已提交
930 931 932 933 934 935 936 937
  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
      if (err) {
          console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
          return;
      }
      downloadTask = data;
  });
  ```
938

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

A
anyueling 已提交
941
download(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
942 943 944

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

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

947 948 949 950 951 952
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
953
  | 参数名 | 类型 | 必填 | 说明 |
954
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
955
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
956
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
957 958 959

**返回值:**

A
anyueling 已提交
960
  | 类型 | 说明 |
961
  | -------- | -------- |
A
anyueling 已提交
962
  | Promise&lt;[DownloadTask](#downloadtask)&gt; | 返回下载任务。 |
963 964 965 966 967

**示例:**

  ```js
  let downloadTask;
A
anyueling 已提交
968
  request.download(globalThis.abilityContext, { url: 'https://xxxx/xxxx.hap' }).then((data) => {
969 970 971 972 973 974 975
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


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

A
anyueling 已提交
978
download(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
979 980 981

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

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

984 985 986 987 988 989
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
990
  | 参数名 | 类型 | 必填 | 说明 |
991
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
992
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
993 994
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
995 996 997 998 999

**示例:**

  ```js
  let downloadTask;
A
anyueling 已提交
1000
  request.download(globalThis.abilityContext, { url: 'https://xxxx/xxxxx.hap', 
1001 1002 1003 1004 1005 1006 1007 1008 1009 1010
  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
      if (err) {
          console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
          return;
      }
      downloadTask = data;
  });
  ```


Z
zengyawen 已提交
1011 1012
## DownloadTask

A
anyueling 已提交
1013
下载任务,使用下列方法前,需要先获取DownloadTask对象,promise形式通过[request.downloadFile<sup>9+</sup>](#requestdownloadfile9)获取,callback形式通过[request.downloadFile<sup>9+</sup>](#requestdownloadfile9-1)获取。
Z
zengyawen 已提交
1014 1015 1016 1017


### on('progress')

Z
zengyawen 已提交
1018
on(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
1019 1020 1021 1022 1023 1024 1025

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

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

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

1026 1027 1028
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1029
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1030 1031
  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 是 | 下载的回调函数。 |
Z
zengyawen 已提交
1032 1033 1034

  回调函数的参数:

1035 1036
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
1037 1038
| receivedSize | number | 是 | 当前下载的进度,单位为B。 |
| totalSize | number | 是 | 下载文件的总大小,单位为B。 |
Z
zengyawen 已提交
1039

1040
**示例:**
A
anyueling 已提交
1041

1042
  ```js
1043
  downloadTask.on('progress', function download_callback(receivedSize, totalSize) {
Z
zengyawen 已提交
1044 1045
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
1046
  );
Z
zengyawen 已提交
1047 1048 1049 1050 1051
  ```


### off('progress')

Z
zengyawen 已提交
1052
off(type: 'progress', callback?: (receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
1053 1054 1055 1056 1057 1058 1059

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

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

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

1060 1061
**参数:**

1062
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1063
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1064 1065
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 否 | 下载任务的回调函数。 |
Z
zengyawen 已提交
1066 1067 1068

  回调函数的参数:

1069 1070
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
1071 1072
| receivedSize | number | 是 | 当前下载的进度,单位为B。|
| totalSize | number | 是 | 下载文件的总大小,单位为B。|
Z
zengyawen 已提交
1073

1074
**示例:**
A
anyueling 已提交
1075

1076
  ```js
1077 1078 1079
  downloadTask .off('progress', function download_callback(receivedSize, totalSize) {
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
1080
  );
Z
zengyawen 已提交
1081 1082 1083
  ```


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

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

Z
zengyawen 已提交
1088
开启下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
1089 1090 1091 1092 1093

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

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

1094 1095 1096
**参数:**

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

1101
**示例:**
A
anyueling 已提交
1102

1103
  ```js
1104 1105 1106
  downloadTask.on('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
1107
  );
Z
zengyawen 已提交
1108 1109 1110
  ```


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

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

Z
zengyawen 已提交
1115
取消下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
1116 1117 1118 1119 1120

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

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

1121 1122 1123
**参数:**

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

1128
**示例:**
A
anyueling 已提交
1129

1130
  ```js
1131 1132 1133
  downloadTask.off('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
1134
  );
Z
zengyawen 已提交
1135 1136 1137 1138 1139
  ```


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

Z
zengyawen 已提交
1140
on(type: 'fail', callback: (err: number) =&gt; void): void
Z
zengyawen 已提交
1141 1142 1143 1144 1145 1146 1147

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

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

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

1148 1149 1150
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1151
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1152 1153
  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 是 | 下载失败的回调函数。 |
Z
zengyawen 已提交
1154 1155 1156

  回调函数的参数:

1157 1158
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
1159
| err | number | 是 | 下载失败的错误码,错误原因见[下载任务的错误码](#下载任务的错误码)。 |
Z
zengyawen 已提交
1160

1161
**示例:**
A
anyueling 已提交
1162

1163
  ```js 
1164 1165 1166
  downloadTask.on('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  }
Z
zengyawen 已提交
1167
  );
Z
zengyawen 已提交
1168 1169 1170 1171 1172
  ```


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

Z
zengyawen 已提交
1173
off(type: 'fail', callback?: (err: number) =&gt; void): void
Z
zengyawen 已提交
1174 1175 1176 1177 1178 1179 1180

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

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

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

1181 1182 1183
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1184
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1185 1186
  | type | string | 是 | 取消订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 否 | 取消下载失败的回调函数。 |
Z
zengyawen 已提交
1187 1188 1189

  回调函数的参数

1190 1191
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
1192
| err | number | 是 | 下载失败的错误码。错误原因见[下载任务的错误码](#下载任务的错误码)。 |
Z
zengyawen 已提交
1193

1194
**示例:**
A
anyueling 已提交
1195

1196
  ```js
1197 1198 1199
  downloadTask.off('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  } 
Z
zengyawen 已提交
1200
  );
Z
zengyawen 已提交
1201 1202
  ```

A
anyueling 已提交
1203
### delete<sup>9+</sup>
Z
zengyawen 已提交
1204

A
anyueling 已提交
1205
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1206 1207 1208 1209 1210 1211 1212

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

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

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

1213 1214 1215
**返回值:**

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

1219
**示例:**
A
anyueling 已提交
1220

1221
  ```js
A
anyueling 已提交
1222
  downloadTask.delete().then((result) => {
Z
zengyawen 已提交
1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233
      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 已提交
1234
### delete<sup>9+</sup>
Z
zengyawen 已提交
1235

A
anyueling 已提交
1236
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
1237 1238 1239 1240 1241 1242 1243

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

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

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

1244 1245
**参数:**

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

1250
**示例:**
A
anyueling 已提交
1251

1252
  ```js
A
anyueling 已提交
1253
  downloadTask.delete((err, result)=>{
Z
zengyawen 已提交
1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266
      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 已提交
1267
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1268

A
anyueling 已提交
1269
getTaskInfo(): Promise&lt;DownloadInfo&gt;
Z
zengyawen 已提交
1270 1271 1272 1273 1274 1275 1276

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

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

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

1277 1278 1279
**返回值:**

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

1283
**示例:**
A
anyueling 已提交
1284

1285
  ```js
A
anyueling 已提交
1286
  downloadTask.getTaskInfo().then((downloadInfo) => {    
Z
zengyawen 已提交
1287
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
Z
zengyawen 已提交
1288 1289 1290 1291 1292 1293
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


A
anyueling 已提交
1294
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1295

A
anyueling 已提交
1296
getTaskInfo(callback: AsyncCallback&lt;DownloadInfo&gt;): void
Z
zengyawen 已提交
1297 1298 1299 1300 1301 1302 1303

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

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

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

1304 1305
**参数:**

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

1310
**示例:**
A
anyueling 已提交
1311

1312
  ```js
A
anyueling 已提交
1313
  downloadTask.getTaskInfo((err, downloadInfo)=>{
Z
zengyawen 已提交
1314 1315 1316 1317 1318 1319 1320 1321 1322
      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 已提交
1323
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1324

A
anyueling 已提交
1325
getTaskMimeType(): Promise&lt;string&gt;
Z
zengyawen 已提交
1326 1327 1328 1329 1330 1331 1332

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

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

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

1333 1334 1335
**返回值:**

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

1339
**示例:**
A
anyueling 已提交
1340

1341
  ```js
A
anyueling 已提交
1342
  downloadTask.getTaskMimeType().then((data) => {    
Z
zengyawen 已提交
1343 1344 1345 1346 1347 1348 1349
      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 已提交
1350
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1351

A
anyueling 已提交
1352
getTaskMimeType(callback: AsyncCallback&lt;string&gt;): void;
Z
zengyawen 已提交
1353 1354 1355 1356 1357 1358 1359

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

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

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

1360 1361
**参数:**

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

1366
**示例:**
A
anyueling 已提交
1367

1368
  ```js
A
anyueling 已提交
1369
  downloadTask.getTaskMimeType((err, data)=>{
Z
zengyawen 已提交
1370 1371 1372 1373 1374 1375 1376 1377 1378
      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 已提交
1379
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1380

A
anyueling 已提交
1381
suspend(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1382 1383 1384 1385 1386 1387 1388

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

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

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

1389 1390 1391
**返回值:**

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

1395
**示例:**
A
anyueling 已提交
1396

1397
  ```js
A
anyueling 已提交
1398
  downloadTask.suspend().then((result) => {    
Z
zengyawen 已提交
1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409
      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 已提交
1410
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1411

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

Z
zengyawen 已提交
1414 1415 1416 1417 1418 1419
暂停下载任务,异步方法,使用callback形式返回结果。

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

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

1420 1421
**参数:**

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

1426
**示例:**
A
anyueling 已提交
1427

1428
  ```js
A
anyueling 已提交
1429
  downloadTask.suspend((err, result)=>{
Z
zengyawen 已提交
1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442
      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 已提交
1443
### restore<sup>9+</sup>
Z
zengyawen 已提交
1444

A
anyueling 已提交
1445
restore(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1446 1447 1448 1449 1450 1451 1452

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

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

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

1453
**返回值:**
1454 1455

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

1459
**示例:**
A
anyueling 已提交
1460

1461
  ```js
A
anyueling 已提交
1462
  downloadTask.restore().then((result) => {
Z
zengyawen 已提交
1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474
      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 已提交
1475
### restore<sup>9+</sup>
Z
zengyawen 已提交
1476

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

Z
zengyawen 已提交
1479 1480 1481 1482 1483 1484
重新启动暂停的下载任务,异步方法,使用callback形式返回结果。

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

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

1485 1486
**参数:**

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

1491
**示例:**
A
anyueling 已提交
1492

1493
  ```js
A
anyueling 已提交
1494
  downloadTask.restore((err, result)=>{
Z
zengyawen 已提交
1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507
      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.');
      }
  });
  ```


1508

A
anyueling 已提交
1509 1510 1511
### remove<sup>(deprecated)</sup>

remove(): Promise&lt;boolean&gt;
1512 1513 1514

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

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

1517 1518 1519 1520 1521 1522
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1523
  | 类型 | 说明 |
1524
  | -------- | -------- |
A
anyueling 已提交
1525
  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
1526 1527 1528 1529

**示例:**

  ```js
A
anyueling 已提交
1530
  downloadTask.remove().then((result) => {
1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541
      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 已提交
1542
### remove<sup>(deprecated)</sup>
1543

A
anyueling 已提交
1544
remove(callback: AsyncCallback&lt;boolean&gt;): void
1545 1546 1547

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

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

1550 1551 1552 1553 1554 1555
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1556
  | 参数名 | 类型 | 必填 | 说明 |
1557
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1558
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
1559 1560 1561 1562

**示例:**

  ```js
A
anyueling 已提交
1563
  downloadTask.remove((err, result)=>{
1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576
      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 已提交
1577
### query<sup>(deprecated)</sup>
1578

A
anyueling 已提交
1579
query(): Promise&lt;DownloadInfo&gt;
1580 1581 1582

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

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

1585 1586 1587 1588
**需要权限**:ohos.permission.INTERNET

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

1589 1590
**返回值:**

A
anyueling 已提交
1591 1592 1593
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
1594 1595 1596 1597

**示例:**

  ```js
A
anyueling 已提交
1598
  downloadTask.query().then((downloadInfo) => {    
1599 1600 1601 1602 1603 1604 1605
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


A
anyueling 已提交
1606
### query<sup>(deprecated)</sup>
1607

A
anyueling 已提交
1608
query(callback: AsyncCallback&lt;DownloadInfo&gt;): void
1609 1610 1611

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

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

1614 1615 1616 1617 1618 1619
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1620
  | 参数名 | 类型 | 必填 | 说明 |
1621
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1622
  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
1623 1624 1625 1626

**示例:**

  ```js
A
anyueling 已提交
1627
  downloadTask.query((err, downloadInfo)=>{
1628 1629 1630 1631 1632 1633 1634 1635 1636
      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 已提交
1637
### queryMimeType<sup>(deprecated)</sup>
1638

A
anyueling 已提交
1639
queryMimeType(): Promise&lt;string&gt;
1640 1641 1642

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

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

1645 1646 1647 1648 1649 1650
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1651
  | 类型 | 说明 |
1652
  | -------- | -------- |
A
anyueling 已提交
1653
  | Promise&lt;string&gt; | 查询下载任务的MimeType。 |
1654 1655 1656 1657

**示例:**

  ```js
A
anyueling 已提交
1658
  downloadTask.queryMimeType().then((data) => {    
1659 1660 1661 1662 1663 1664 1665
      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 已提交
1666
### queryMimeType<sup>(deprecated)</sup>
1667

A
anyueling 已提交
1668
queryMimeType(callback: AsyncCallback&lt;string&gt;): void;
1669 1670 1671

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

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

1674 1675 1676 1677 1678 1679
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1680
  | 参数名 | 类型 | 必填 | 说明 |
1681
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1682
  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的MimeType的回调函数。 |
1683 1684 1685 1686

**示例:**

  ```js
A
anyueling 已提交
1687
  downloadTask.queryMimeType((err, data)=>{
1688 1689 1690 1691 1692 1693 1694 1695 1696
      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 已提交
1697
### pause<sup>(deprecated)</sup>
1698

A
anyueling 已提交
1699
pause(): Promise&lt;void&gt;
1700 1701 1702

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

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

1705 1706 1707 1708 1709 1710
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1711
  | 类型 | 说明 |
1712
  | -------- | -------- |
A
anyueling 已提交
1713
  | Promise&lt;void&gt; | 暂停下载任务是否成功。 |
1714 1715 1716 1717

**示例:**

  ```js
A
anyueling 已提交
1718
  downloadTask.pause().then((result) => {    
1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729
      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 已提交
1730
### pause<sup>(deprecated)</sup>
1731

A
anyueling 已提交
1732 1733 1734
pause(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9-1)替代。
1735 1736 1737 1738 1739 1740 1741 1742 1743

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

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

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

**参数:**

A
anyueling 已提交
1744
  | 参数名 | 类型 | 必填 | 说明 |
1745
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1746
  | callback | AsyncCallback&lt;void&gt; | 是 | 暂停下载任务的回调函数。 |
1747 1748 1749 1750

**示例:**

  ```js
A
anyueling 已提交
1751
  downloadTask.pause((err, result)=>{
1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764
      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 已提交
1765
### resume<sup>(deprecated)</sup>
1766

A
anyueling 已提交
1767
resume(): Promise&lt;void&gt;
1768 1769 1770

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

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

1773 1774 1775 1776
**需要权限**:ohos.permission.INTERNET

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

1777
**返回值:**
1778

A
anyueling 已提交
1779
  | 类型 | 说明 |
1780
  | -------- | -------- |
A
anyueling 已提交
1781
  | Promise&lt;void&gt; | 重新启动暂停的下载任务是否成功。 |
1782 1783 1784 1785

**示例:**

  ```js
A
anyueling 已提交
1786
  downloadTask.resume().then((result) => {
1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798
      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 已提交
1799
### resume<sup>(deprecated)</sup>
1800

A
anyueling 已提交
1801 1802 1803
resume(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9-1)替代。
1804 1805 1806 1807 1808 1809 1810 1811 1812

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

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

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

**参数:**

A
anyueling 已提交
1813
  | 参数名 | 类型 | 必填 | 说明 |
1814
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1815
  | callback | AsyncCallback&lt;void&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
1816 1817 1818 1819

**示例:**

  ```js
A
anyueling 已提交
1820
  downloadTask.resume((err, result)=>{
1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833
      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 已提交
1834 1835
## DownloadConfig

A
anyueling 已提交
1836 1837
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1838 1839 1840 1841 1842
**系统能力**: SystemCapability.MiscServices.Download

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| url | string | 是 | 资源地址。 |
1843
| 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 已提交
1844 1845
| enableMetered | boolean | 否 | 设置是否允许在按流量计费的连接下下载。<br/>-&nbsp;true:是<br/>-&nbsp;false:否 |
| enableRoaming | boolean | 否 | 设置是否允许在漫游网络中下载。 <br/>-&nbsp;true:是<br/>-&nbsp;false:否|
Z
zengyawen 已提交
1846
| description | string | 否 | 设置下载会话的描述。 |
A
anyueling 已提交
1847
| 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 已提交
1848
| networkType | number | 否 | 设置允许下载的网络类型。<br/>-&nbsp;NETWORK_MOBILE:0x00000001<br/>-&nbsp;NETWORK_WIFI:0x00010000|
A
anyueling 已提交
1849
| title | string | 否 | 设置下载任务名称。 |
1850
| background<sup>9+</sup> | boolean | 否 | 后台任务通知开关,开启后可在通知中显示下载状态。 |
Z
zengyawen 已提交
1851 1852


Z
zengyawen 已提交
1853
## DownloadInfo<sup>7+</sup>
Z
zengyawen 已提交
1854

A
anyueling 已提交
1855 1856
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1857 1858
**系统能力**: SystemCapability.MiscServices.Download

Z
zengyawen 已提交
1859
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1860
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1861
| downloadId | number | 是 | 下载的文件ID。 |
A
anyueling 已提交
1862
| failedReason | number | 否 | 下载失败原因,可以是任何[下载任务的错误码](#下载任务的错误码)常量。 |
Z
zengyawen 已提交
1863 1864
| fileName | string | 是 | 下载的文件名。 |
| filePath | string | 是 | 存储文件的URI。 |
A
anyueling 已提交
1865 1866
| pausedReason | number | 否 | 会话暂停的原因,可以是任何[下载任务暂停原因](#下载任务暂停原因)常量。 |
| status | number | 是 | 下载状态码,可以是任何[下载任务状态码](#下载任务状态码)常量。 |
Z
zengyawen 已提交
1867
| targetURI | string | 是 | 下载文件的URI。 |
A
anyueling 已提交
1868
| downloadTitle | string | 是 | 下载任务名称。 |
Z
zengyawen 已提交
1869 1870
| downloadTotalBytes | number | 是 | 下载的文件的总大小(int&nbsp;bytes)。 |
| description | string | 是 | 待下载文件的描述信息。 |
A
anyueling 已提交
1871
| downloadedBytes | number | 是 | 实时下载大小(int&nbsp;&nbsp;bytes)。 |