js-apis-request.md 56.8 KB
Newer Older
Z
zengyawen 已提交
1
# 上传下载
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

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

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

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

A
anyueling 已提交
36
下载服务器需要支持HTTP协议的head方法,能够通过Content-length获取下载数据大小,否则下载任务失败,可通过[on('fail')<sup>7+</sup>)](#onfail7)查看失败原因。
Z
zengyawen 已提交
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56


## 常量

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

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

| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| NETWORK_MOBILE | number | 是 | 否 | 使用蜂窝网络时允许下载的位标志。 |
| NETWORK_WIFI | number | 是 | 否 | 使用WLAN时允许下载的位标志。 |
| ERROR_CANNOT_RESUME<sup>7+</sup> | number | 是 | 否 | 某些临时错误导致的恢复下载失败。 |
| ERROR_DEVICE_NOT_FOUND<sup>7+</sup> | number | 是 | 否 | 找不到SD卡等存储设备。 |
| ERROR_FILE_ALREADY_EXISTS<sup>7+</sup> | number | 是 | 否 | 要下载的文件已存在,下载会话不能覆盖现有文件。 |
| ERROR_FILE_ERROR<sup>7+</sup> | number | 是 | 否 | 文件操作失败。 |
| ERROR_HTTP_DATA_ERROR<sup>7+</sup> | number | 是 | 否 | HTTP传输失败。 |
| ERROR_INSUFFICIENT_SPACE<sup>7+</sup> | number | 是 | 否 | 存储空间不足。 |
| ERROR_TOO_MANY_REDIRECTS<sup>7+</sup> | number | 是 | 否 | 网络重定向过多导致的错误。 |
| ERROR_UNHANDLED_HTTP_CODE<sup>7+</sup> | number | 是 | 否 | 无法识别的HTTP代码。 |
57 58
| ERROR_OFFLINE<sup>9+</sup> | number | 是 | 否 | 网络未连接。 |
| ERROR_UNSUPPORTED_NETWORK_TYPE<sup>9+</sup> | number | 是 | 否 | 网络类型不匹配。 |
Z
zengyawen 已提交
59 60 61 62 63 64 65 66 67 68 69 70
| ERROR_UNKNOWN<sup>7+</sup> | number | 是 | 否 | 未知错误。 |
| PAUSED_QUEUED_FOR_WIFI<sup>7+</sup> | number | 是 | 否 | 下载被暂停并等待WLAN连接,因为文件大小超过了使用蜂窝网络的会话允许的最大值。 |
| PAUSED_UNKNOWN<sup>7+</sup> | number | 是 | 否 | 未知原因导致暂停下载。 |
| PAUSED_WAITING_FOR_NETWORK<sup>7+</sup> | number | 是 | 否 | 由于网络问题(例如网络断开)而暂停下载。 |
| PAUSED_WAITING_TO_RETRY<sup>7+</sup> | number | 是 | 否 | 发生网络错误,将重试下载会话。 |
| SESSION_FAILED<sup>7+</sup> | number | 是 | 否 | 下载会话已失败,将不会重试。 |
| SESSION_PAUSED<sup>7+</sup> | number | 是 | 否 | 下载会话已暂停。 |
| SESSION_PENDING<sup>7+</sup> | number | 是 | 否 | 正在调度下载会话。 |
| SESSION_RUNNING<sup>7+</sup> | number | 是 | 否 | 下载会话正在进行中。 |
| SESSION_SUCCESSFUL<sup>7+</sup> | number | 是 | 否 | 下载会话已完成。 |


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

A
anyueling 已提交
73
uploadFile(context: BaseContext, config: UploadConfig): Promise&lt;UploadTask&gt;
Z
zengyawen 已提交
74 75 76 77 78 79 80

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

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

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

81 82 83
**参数:**

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

A
anyueling 已提交
88

89 90 91
**返回值:**

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

A
anyueling 已提交
95 96 97 98 99 100 101
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

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

102
**示例:**
A
anyueling 已提交
103

104
  ```js
105
  let uploadTask;
A
anyueling 已提交
106 107 108 109 110 111 112
  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 已提交
113
  request.uploadFile(globalThis.abilityContext, uploadConfig).then((data) => {
Z
zengyawen 已提交
114 115 116
      uploadTask = data;
  }).catch((err) => {
      console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
A
anyueling 已提交
117
  });
Z
zengyawen 已提交
118 119 120
  ```


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

A
anyueling 已提交
123
uploadFile(context: BaseContext, config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
Z
zengyawen 已提交
124 125 126 127 128 129 130

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

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

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

131 132
**参数:**

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

A
anyueling 已提交
139 140 141 142 143 144 145
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

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

146
**示例:**
A
anyueling 已提交
147

148
  ```js
149
  let uploadTask;
A
anyueling 已提交
150 151 152 153 154 155 156
  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 已提交
157
  request.uploadFile(globalThis.abilityContext, uploadConfig, (err, data) => {
Z
zengyawen 已提交
158 159 160 161 162 163 164
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```
A
anyueling 已提交
165

A
anyueling 已提交
166 167 168
## request.upload<sup>(deprecated)</sup>

upload(config: UploadConfig): Promise&lt;UploadTask&gt;
A
anyueling 已提交
169 170 171

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

A
anyueling 已提交
172 173 174
**模型约束**:此接口仅可在FA模型下使用

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

A
anyueling 已提交
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
**需要权限**:ohos.permission.INTERNET

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

**参数:**

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

**返回值:**

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

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

A
anyueling 已提交
194 195 196 197 198 199
  ```js
  let uploadTask;
  let uploadConfig = {
    url: 'https://patch',
    header: { key1: "value1", key2: "value2" },
    method: "POST",
A
anyueling 已提交
200 201
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
A
anyueling 已提交
202
  };
A
anyueling 已提交
203
  request.upload(uploadConfig).then((data) => {
A
anyueling 已提交
204 205 206
      uploadTask = data;
  }).catch((err) => {
      console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
A
anyueling 已提交
207
  })
A
anyueling 已提交
208 209 210
  ```


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

A
anyueling 已提交
213
upload(config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
A
anyueling 已提交
214 215 216

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

A
anyueling 已提交
217 218 219
**模型约束**:此接口仅可在FA模型下使用

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

A
anyueling 已提交
221 222 223 224 225
**需要权限**:ohos.permission.INTERNET

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

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

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

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

A
anyueling 已提交
234 235 236 237 238 239 240 241 242
  ```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 已提交
243
  request.upload(uploadConfig, (err, data) => {
A
anyueling 已提交
244 245 246 247 248 249 250
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```
Z
zengyawen 已提交
251

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

A
anyueling 已提交
254
upload(context: BaseContext, config: UploadConfig): Promise&lt;UploadTask&gt;
255 256 257

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

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

260 261 262 263 264 265
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
266
  | 参数名 | 类型 | 必填 | 说明 |
267
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
268
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
269 270
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
  
271 272 273

**返回值:**

A
anyueling 已提交
274
  | 类型 | 说明 |
275
  | -------- | -------- |
A
anyueling 已提交
276
  | Promise&lt;[UploadTask](#uploadtask)&gt; | 返回上传任务。 |
277 278 279 280 281 282 283 284 285

**示例:**

  ```js
  let uploadTask;
  let uploadConfig = {
    url: 'https://patch',
    header: { key1: "value1", key2: "value2" },
    method: "POST",
A
anyueling 已提交
286 287
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
288
  };
A
anyueling 已提交
289
  request.upload(globalThis.abilityContext, uploadConfig).then((data) => {
290 291 292 293 294 295 296
      uploadTask = data;
  }).catch((err) => {
      console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
  });
  ```


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

A
anyueling 已提交
299
upload(context: BaseContext, config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
300 301 302

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

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

305 306 307 308 309 310
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
311
  | 参数名 | 类型 | 必填 | 说明 |
312
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
313
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
314 315
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 是 | 回调函数,异步返回UploadTask对象。 |
316 317 318 319 320 321 322 323 324 325 326 327

**示例:**

  ```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 已提交
328
  request.upload(globalThis.abilityContext, uploadConfig, (err, data) => {
329 330 331 332 333 334 335 336
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```

Z
zengyawen 已提交
337 338
## UploadTask

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

Z
zengyawen 已提交
341 342 343 344


### on('progress')

Z
zengyawen 已提交
345
on(type: 'progress', callback:(uploadedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
346 347 348 349 350 351 352

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

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

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

353 354 355
**参数:**

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

360
  回调函数的参数
Z
zengyawen 已提交
361

362 363 364 365
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| uploadedSize | number | 是 | 当前已上传文件大小,单位为KB。 |
| totalSize | number | 是 | 上传文件的总大小,单位为KB。 |
Z
zengyawen 已提交
366

367
**示例:**
A
anyueling 已提交
368

369
  ```js
Z
zengyawen 已提交
370
  uploadTask.on('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
371 372
      console.info("upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize);
  }
Z
zengyawen 已提交
373
  );
Z
zengyawen 已提交
374 375 376 377 378
  ```


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

Z
zengyawen 已提交
379
on(type: 'headerReceive', callback:  (header: object) =&gt; void): void
Z
zengyawen 已提交
380 381 382 383 384 385 386

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

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

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

387 388 389
**参数:**

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

  回调函数的参数:

396 397 398
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
399

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

402
  ```js
Z
zengyawen 已提交
403
  uploadTask.on('headerReceive', function callback(headers){   
Z
zengyawen 已提交
404 405
      console.info("upOnHeader headers:" + JSON.stringify(headers));
  }
Z
zengyawen 已提交
406
  );
Z
zengyawen 已提交
407 408 409
  ```


A
修改  
anyueling 已提交
410
### on('complete' | 'fail')<sup>9+</sup>
A
anyueling 已提交
411 412 413 414 415 416 417 418 419 420 421 422 423 424

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

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

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

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

**参数:**

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

  回调函数的参数

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

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

A
anyueling 已提交
435
  ```js
A
修改  
anyueling 已提交
436 437 438
  uploadTask.on('complete', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnComplete taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
439 440 441 442
    }
  }
  );

A
修改  
anyueling 已提交
443 444 445
  uploadTask.on('fail', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnFail taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
446 447 448 449 450 451
    }
  }
  );
  ```


Z
zengyawen 已提交
452 453
### off('progress')

Z
zengyawen 已提交
454
off(type:  'progress',  callback?: (uploadedSize: number, totalSize: number) =&gt;  void): void
Z
zengyawen 已提交
455 456 457 458 459 460 461

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

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

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

462 463
**参数:**

464
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
465
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
466 467
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(上传的进度信息)。 |
  | callback | function | 否 | 上传任务的回调函数。 |
Z
zengyawen 已提交
468 469 470

  回调函数的参数:

471 472 473 474
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| uploadedSize | number | 是 | 当前已上传文件的大小,单位为KB。 |
| totalSize | number | 是 | 上传文件的总大小,单位为KB。 |
Z
zengyawen 已提交
475

476
**示例:**
A
anyueling 已提交
477

478
  ```js
Z
zengyawen 已提交
479
  uploadTask.off('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
480 481
      console.info('uploadedSize: ' + uploadedSize, 'totalSize: ' + totalSize);
  }
Z
zengyawen 已提交
482
  );
Z
zengyawen 已提交
483 484 485 486 487
  ```


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

Z
zengyawen 已提交
488
off(type: 'headerReceive', callback?: (header: object) =&gt; void): void
Z
zengyawen 已提交
489 490 491 492 493 494 495

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

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

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

496 497
**参数:**

498
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
499
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
500
  | type | string | 是 | 取消订阅的事件类型,取值为'headerReceive'(接收响应头)。 |
Z
zengyawen 已提交
501
  | callback | function | 否 | HTTP&nbsp;Response&nbsp;Header事件的回调函数。 |
Z
zengyawen 已提交
502 503 504

  回调函数的参数:

505 506 507
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
508

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

511
  ```js
Z
zengyawen 已提交
512
  uploadTask.off('headerReceive', function callback(headers) {
Z
zengyawen 已提交
513 514
      console.info("upOnHeader headers:" + JSON.stringify(headers));
  }
Z
zengyawen 已提交
515
  );
Z
zengyawen 已提交
516 517
  ```

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

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

A
修改  
anyueling 已提交
522
关闭上传任务监听,异步方法,使用callback形式返回结果。
A
anyueling 已提交
523 524 525 526 527 528 529 530 531 532

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

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

**参数:**

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

  回调函数的参数

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

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

A
anyueling 已提交
543
  ```js
A
修改  
anyueling 已提交
544 545 546
  uploadTask.off('complete', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnComplete taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
547 548 549
    }
  }
  );
A
anyueling 已提交
550

A
修改  
anyueling 已提交
551 552 553
  uploadTask.off('fail', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnFail taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
554 555 556
    }
  }
  );
A
anyueling 已提交
557 558
  ```

A
anyueling 已提交
559 560
### delete<sup>9+</sup>
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
561 562 563 564 565 566 567

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

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

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

568 569 570
**返回值:**

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

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

576
  ```js
A
anyueling 已提交
577
  uploadTask.delete().then((result) => {
Z
zengyawen 已提交
578 579 580 581 582 583 584 585 586 587 588
      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 已提交
589
### delete<sup>9+</sup>
Z
zengyawen 已提交
590

A
anyueling 已提交
591
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
592 593 594 595 596 597 598

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

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

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

599 600
**参数:**

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

605
**示例:**
A
anyueling 已提交
606

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

A
anyueling 已提交
624
remove(): Promise&lt;boolean&gt;
625 626 627

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

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

630 631 632 633 634 635
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
636
  | 类型 | 说明 |
637
  | -------- | -------- |
A
anyueling 已提交
638
  | Promise&lt;boolean&gt; | 移除任务是否成功。true:成功,false:不成功。 |
639 640 641 642

**示例:**

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

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

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

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

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

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

**参数:**

A
anyueling 已提交
669
  | 参数名 | 类型 | 必填 | 说明 |
670
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
671
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务的回调函数。 |
672 673 674 675

**示例:**

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

A
anyueling 已提交
691 692
**需要权限**:ohos.permission.INTERNET

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

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

A
修改  
anyueling 已提交
703
## TaskState<sup>9+</sup>
A
anyueling 已提交
704 705 706 707 708 709 710 711 712 713

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

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

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

## File

A
anyueling 已提交
717 718
**需要权限**:ohos.permission.INTERNET

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

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


## RequestData

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

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

Z
zengyawen 已提交
735
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
736
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
737 738
| name | string | 是 | 表示表单元素的名称。 |
| value | string | 是 | 表示表单元素的值。 |
Z
zengyawen 已提交
739

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

A
anyueling 已提交
742
downloadFile(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
Z
zengyawen 已提交
743 744 745 746 747 748 749

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

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

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

750 751 752
**参数:**

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

757 758 759
**返回值:**

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

A
anyueling 已提交
763 764 765 766 767 768 769 770 771
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

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

772
**示例:**
A
anyueling 已提交
773

774
  ```js
775
  let downloadTask;
A
anyueling 已提交
776
  request.downloadFile(globalThis.abilityContext, { url: 'https://xxxx/xxxx.hap' }).then((data) => {
Z
zengyawen 已提交
777 778 779 780 781 782 783
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


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

A
anyueling 已提交
786
downloadFile(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
Z
zengyawen 已提交
787 788 789 790 791 792 793

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

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

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

794 795
**参数:**

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

A
anyueling 已提交
802 803 804 805 806 807 808 809 810
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

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

811
**示例:**
A
anyueling 已提交
812

813
  ```js
814
  let downloadTask;
A
anyueling 已提交
815
  request.downloadFile(globalThis.abilityContext, { url: 'https://xxxx/xxxxx.hap', 
Z
zengyawen 已提交
816 817 818 819 820 821 822 823 824
  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
      if (err) {
          console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
          return;
      }
      downloadTask = data;
  });
  ```

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

A
anyueling 已提交
827
download(config: DownloadConfig): Promise&lt;DownloadTask&gt;
A
anyueling 已提交
828 829 830

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

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

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

A
anyueling 已提交
835 836 837 838 839 840 841 842 843 844 845 846 847 848 849
**需要权限**:ohos.permission.INTERNET

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

**参数:**

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

**返回值:**

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

A
anyueling 已提交
851
**示例:**
A
anyueling 已提交
852

A
anyueling 已提交
853 854
  ```js
  let downloadTask;
A
anyueling 已提交
855
  request.download({ url: 'https://xxxx/xxxx.hap' }).then((data) => {
A
anyueling 已提交
856 857 858 859 860 861 862
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


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

A
anyueling 已提交
865
download(config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void
A
anyueling 已提交
866 867 868

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

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

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

A
anyueling 已提交
873 874 875 876 877 878
**需要权限**:ohos.permission.INTERNET

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

**参数:**

879
  | 参数名 | 类型 | 必填 | 说明 |
A
anyueling 已提交
880 881
  | -------- | -------- | -------- | -------- |
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
882
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
A
anyueling 已提交
883 884

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

A
anyueling 已提交
886 887
  ```js
  let downloadTask;
A
anyueling 已提交
888
  request.download({ url: 'https://xxxx/xxxxx.hap', 
A
anyueling 已提交
889 890 891 892 893 894 895 896
  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
      if (err) {
          console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
          return;
      }
      downloadTask = data;
  });
  ```
897

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

A
anyueling 已提交
900
download(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
901 902 903

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

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

906 907 908 909 910 911
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
912
  | 参数名 | 类型 | 必填 | 说明 |
913
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
914
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
915
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
916 917 918

**返回值:**

A
anyueling 已提交
919
  | 类型 | 说明 |
920
  | -------- | -------- |
A
anyueling 已提交
921
  | Promise&lt;[DownloadTask](#downloadtask)&gt; | 返回下载任务。 |
922 923 924 925 926

**示例:**

  ```js
  let downloadTask;
A
anyueling 已提交
927
  request.download(globalThis.abilityContext, { url: 'https://xxxx/xxxx.hap' }).then((data) => {
928 929 930 931 932 933 934
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


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

A
anyueling 已提交
937
download(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
938 939 940

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

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

943 944 945 946 947 948
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
949
  | 参数名 | 类型 | 必填 | 说明 |
950
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
951
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
952 953
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
954 955 956 957 958

**示例:**

  ```js
  let downloadTask;
A
anyueling 已提交
959
  request.download(globalThis.abilityContext, { url: 'https://xxxx/xxxxx.hap', 
960 961 962 963 964 965 966 967 968 969
  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
      if (err) {
          console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
          return;
      }
      downloadTask = data;
  });
  ```


Z
zengyawen 已提交
970 971
## DownloadTask

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


### on('progress')

Z
zengyawen 已提交
977
on(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
978 979 980 981 982 983 984

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

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

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

985 986 987
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
988
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
989 990
  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 是 | 下载的回调函数。 |
Z
zengyawen 已提交
991 992 993

  回调函数的参数:

994 995 996 997
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| receivedSize | number | 是 | 当前下载的进度,单位为KB。 |
| totalSize | number | 是 | 下载文件的总大小,单位为KB。 |
Z
zengyawen 已提交
998

999
**示例:**
A
anyueling 已提交
1000

1001
  ```js
1002
  downloadTask.on('progress', function download_callback(receivedSize, totalSize) {
Z
zengyawen 已提交
1003 1004
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
1005
  );
Z
zengyawen 已提交
1006 1007 1008 1009 1010
  ```


### off('progress')

Z
zengyawen 已提交
1011
off(type: 'progress', callback?: (receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
1012 1013 1014 1015 1016 1017 1018

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

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

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

1019 1020
**参数:**

1021
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1022
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1023 1024
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 否 | 下载任务的回调函数。 |
Z
zengyawen 已提交
1025 1026 1027

  回调函数的参数:

1028 1029 1030 1031
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| receivedSize | number | 是 | 当前下载的进度。 |
| totalSize | number | 是 | 下载文件的总大小。 |
Z
zengyawen 已提交
1032

1033
**示例:**
A
anyueling 已提交
1034

1035
  ```js
1036 1037 1038
  downloadTask .off('progress', function download_callback(receivedSize, totalSize) {
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
1039
  );
Z
zengyawen 已提交
1040 1041 1042
  ```


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

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

Z
zengyawen 已提交
1047
开启下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
1048 1049 1050 1051 1052

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

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

1053 1054 1055
**参数:**

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

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

1062
  ```js
1063 1064 1065
  downloadTask.on('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
1066
  );
Z
zengyawen 已提交
1067 1068 1069
  ```


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

Z
zengyawen 已提交
1072
off(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.off('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
1093
  );
Z
zengyawen 已提交
1094 1095 1096 1097 1098
  ```


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

Z
zengyawen 已提交
1099
on(type: 'fail', callback: (err: number) =&gt; void): void
Z
zengyawen 已提交
1100 1101 1102 1103 1104 1105 1106

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

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

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

1107 1108 1109
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1110
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1111 1112
  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 是 | 下载失败的回调函数。 |
Z
zengyawen 已提交
1113 1114 1115

  回调函数的参数:

1116 1117 1118
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| err | number | 是 | 下载失败的错误码,错误原因见[ERROR.*](#常量)。 |
Z
zengyawen 已提交
1119

1120
**示例:**
A
anyueling 已提交
1121

1122
  ```js 
1123 1124 1125
  downloadTask.on('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  }
Z
zengyawen 已提交
1126
  );
Z
zengyawen 已提交
1127 1128 1129 1130 1131
  ```


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

Z
zengyawen 已提交
1132
off(type: 'fail', callback?: (err: number) =&gt; void): void
Z
zengyawen 已提交
1133 1134 1135 1136 1137 1138 1139

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

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

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

1140 1141 1142
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1143
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1144 1145
  | type | string | 是 | 取消订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 否 | 取消下载失败的回调函数。 |
Z
zengyawen 已提交
1146 1147 1148

  回调函数的参数

1149 1150 1151
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| err | number | 是 | 下载失败的错误码。错误原因见[ERROR_*](#常量)。 |
Z
zengyawen 已提交
1152

1153
**示例:**
A
anyueling 已提交
1154

1155
  ```js
1156 1157 1158
  downloadTask.off('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  } 
Z
zengyawen 已提交
1159
  );
Z
zengyawen 已提交
1160 1161
  ```

A
anyueling 已提交
1162
  ### delete<sup>9+</sup>
Z
zengyawen 已提交
1163

A
anyueling 已提交
1164
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1165 1166 1167 1168 1169 1170 1171

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

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

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

1172 1173 1174
**返回值:**

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

1178
**示例:**
A
anyueling 已提交
1179

1180
  ```js
A
anyueling 已提交
1181
  downloadTask.delete().then((result) => {
Z
zengyawen 已提交
1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192
      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 已提交
1193
### delete<sup>9+</sup>
Z
zengyawen 已提交
1194

A
anyueling 已提交
1195
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
1196 1197 1198 1199 1200 1201 1202

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

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

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

1203 1204
**参数:**

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

1209
**示例:**
A
anyueling 已提交
1210

1211
  ```js
A
anyueling 已提交
1212
  downloadTask.delete((err, result)=>{
Z
zengyawen 已提交
1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225
      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 已提交
1226
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1227

A
anyueling 已提交
1228
getTaskInfo(): Promise&lt;DownloadInfo&gt;
Z
zengyawen 已提交
1229 1230 1231 1232 1233 1234 1235

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

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

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

1236 1237 1238
**返回值:**

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

1242
**示例:**
A
anyueling 已提交
1243

1244
  ```js
A
anyueling 已提交
1245
  downloadTask.getTaskInfo().then((downloadInfo) => {    
Z
zengyawen 已提交
1246
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
Z
zengyawen 已提交
1247 1248 1249 1250 1251 1252
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


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

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

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

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

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

1263 1264
**参数:**

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

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

1271
  ```js
A
anyueling 已提交
1272
  downloadTask.getTaskInfo((err, downloadInfo)=>{
Z
zengyawen 已提交
1273 1274 1275 1276 1277 1278 1279 1280 1281
      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 已提交
1282
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1283

A
anyueling 已提交
1284
getTaskMimeType(): Promise&lt;string&gt;
Z
zengyawen 已提交
1285 1286 1287 1288 1289 1290 1291

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

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

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

1292 1293 1294
**返回值:**

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

1298
**示例:**
A
anyueling 已提交
1299

1300
  ```js
A
anyueling 已提交
1301
  downloadTask.getTaskMimeType().then((data) => {    
Z
zengyawen 已提交
1302 1303 1304 1305 1306 1307 1308
      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 已提交
1309
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1310

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

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

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

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

1319 1320
**参数:**

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

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

1327
  ```js
A
anyueling 已提交
1328
  downloadTask.getTaskMimeType((err, data)=>{
Z
zengyawen 已提交
1329 1330 1331 1332 1333 1334 1335 1336 1337
      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 已提交
1338
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1339

A
anyueling 已提交
1340
suspend(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1341 1342 1343 1344 1345 1346 1347

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

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

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

1348 1349 1350
**返回值:**

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

1354
**示例:**
A
anyueling 已提交
1355

1356
  ```js
A
anyueling 已提交
1357
  downloadTask.suspend().then((result) => {    
Z
zengyawen 已提交
1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368
      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 已提交
1369
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1370

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

Z
zengyawen 已提交
1373 1374 1375 1376 1377 1378
暂停下载任务,异步方法,使用callback形式返回结果。

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

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

1379 1380
**参数:**

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

1385
**示例:**
A
anyueling 已提交
1386

1387
  ```js
A
anyueling 已提交
1388
  downloadTask.suspend((err, result)=>{
Z
zengyawen 已提交
1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401
      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 已提交
1402
### restore<sup>9+</sup>
Z
zengyawen 已提交
1403

A
anyueling 已提交
1404
restore(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1405 1406 1407 1408 1409 1410 1411

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

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

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

1412
**返回值:**
1413 1414

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

1418
**示例:**
A
anyueling 已提交
1419

1420
  ```js
A
anyueling 已提交
1421
  downloadTask.restore().then((result) => {
Z
zengyawen 已提交
1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433
      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 已提交
1434
### restore<sup>9+</sup>
Z
zengyawen 已提交
1435

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

Z
zengyawen 已提交
1438 1439 1440 1441 1442 1443
重新启动暂停的下载任务,异步方法,使用callback形式返回结果。

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

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

1444 1445
**参数:**

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

1450
**示例:**
A
anyueling 已提交
1451

1452
  ```js
A
anyueling 已提交
1453
  downloadTask.restore((err, result)=>{
Z
zengyawen 已提交
1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466
      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.');
      }
  });
  ```


1467

A
anyueling 已提交
1468 1469 1470
### remove<sup>(deprecated)</sup>

remove(): Promise&lt;boolean&gt;
1471 1472 1473

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

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

1476 1477 1478 1479 1480 1481
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1482
  | 类型 | 说明 |
1483
  | -------- | -------- |
A
anyueling 已提交
1484
  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
1485 1486 1487 1488

**示例:**

  ```js
A
anyueling 已提交
1489
  downloadTask.remove().then((result) => {
1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500
      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 已提交
1501
### remove<sup>(deprecated)</sup>
1502

A
anyueling 已提交
1503
remove(callback: AsyncCallback&lt;boolean&gt;): void
1504 1505 1506

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

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

1509 1510 1511 1512 1513 1514
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1515
  | 参数名 | 类型 | 必填 | 说明 |
1516
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1517
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
1518 1519 1520 1521

**示例:**

  ```js
A
anyueling 已提交
1522
  downloadTask.remove((err, result)=>{
1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535
      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 已提交
1536
### query<sup>(deprecated)</sup>
1537

A
anyueling 已提交
1538
query(): Promise&lt;DownloadInfo&gt;
1539 1540 1541

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

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

1544 1545 1546 1547
**需要权限**:ohos.permission.INTERNET

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

1548 1549
**返回值:**

A
anyueling 已提交
1550 1551 1552
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
1553 1554 1555 1556

**示例:**

  ```js
A
anyueling 已提交
1557
  downloadTask.query().then((downloadInfo) => {    
1558 1559 1560 1561 1562 1563 1564
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


A
anyueling 已提交
1565
### query<sup>(deprecated)</sup>
1566

A
anyueling 已提交
1567
query(callback: AsyncCallback&lt;DownloadInfo&gt;): void
1568 1569 1570

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

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

1573 1574 1575 1576 1577 1578
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1579
  | 参数名 | 类型 | 必填 | 说明 |
1580
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1581
  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
1582 1583 1584 1585

**示例:**

  ```js
A
anyueling 已提交
1586
  downloadTask.query((err, downloadInfo)=>{
1587 1588 1589 1590 1591 1592 1593 1594 1595
      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 已提交
1596
### queryMimeType<sup>(deprecated)</sup>
1597

A
anyueling 已提交
1598
queryMimeType(): Promise&lt;string&gt;
1599 1600 1601

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

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

1604 1605 1606 1607 1608 1609
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1610
  | 类型 | 说明 |
1611
  | -------- | -------- |
A
anyueling 已提交
1612
  | Promise&lt;string&gt; | 查询下载任务的MimeType。 |
1613 1614 1615 1616

**示例:**

  ```js
A
anyueling 已提交
1617
  downloadTask.queryMimeType().then((data) => {    
1618 1619 1620 1621 1622 1623 1624
      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 已提交
1625
### queryMimeType<sup>(deprecated)</sup>
1626

A
anyueling 已提交
1627
queryMimeType(callback: AsyncCallback&lt;string&gt;): void;
1628 1629 1630

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

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

1633 1634 1635 1636 1637 1638
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1639
  | 参数名 | 类型 | 必填 | 说明 |
1640
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1641
  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的MimeType的回调函数。 |
1642 1643 1644 1645

**示例:**

  ```js
A
anyueling 已提交
1646
  downloadTask.queryMimeType((err, data)=>{
1647 1648 1649 1650 1651 1652 1653 1654 1655
      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 已提交
1656
### pause<sup>(deprecated)</sup>
1657

A
anyueling 已提交
1658
pause(): Promise&lt;void&gt;
1659 1660 1661

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

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

1664 1665 1666 1667 1668 1669
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1670
  | 类型 | 说明 |
1671
  | -------- | -------- |
A
anyueling 已提交
1672
  | Promise&lt;void&gt; | 暂停下载任务是否成功。 |
1673 1674 1675 1676

**示例:**

  ```js
A
anyueling 已提交
1677
  downloadTask.pause().then((result) => {    
1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688
      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 已提交
1689
### pause<sup>(deprecated)</sup>
1690

A
anyueling 已提交
1691 1692 1693
pause(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9-1)替代。
1694 1695 1696 1697 1698 1699 1700 1701 1702

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

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

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

**参数:**

A
anyueling 已提交
1703
  | 参数名 | 类型 | 必填 | 说明 |
1704
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1705
  | callback | AsyncCallback&lt;void&gt; | 是 | 暂停下载任务的回调函数。 |
1706 1707 1708 1709

**示例:**

  ```js
A
anyueling 已提交
1710
  downloadTask.pause((err, result)=>{
1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723
      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 已提交
1724
### resume<sup>(deprecated)</sup>
1725

A
anyueling 已提交
1726
resume(): Promise&lt;void&gt;
1727 1728 1729

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

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

1732 1733 1734 1735
**需要权限**:ohos.permission.INTERNET

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

1736
**返回值:**
1737

A
anyueling 已提交
1738
  | 类型 | 说明 |
1739
  | -------- | -------- |
A
anyueling 已提交
1740
  | Promise&lt;void&gt; | 重新启动暂停的下载任务是否成功。 |
1741 1742 1743 1744

**示例:**

  ```js
A
anyueling 已提交
1745
  downloadTask.resume().then((result) => {
1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757
      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 已提交
1758
### resume<sup>(deprecated)</sup>
1759

A
anyueling 已提交
1760 1761 1762
resume(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9-1)替代。
1763 1764 1765 1766 1767 1768 1769 1770 1771

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

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

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

**参数:**

A
anyueling 已提交
1772
  | 参数名 | 类型 | 必填 | 说明 |
1773
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1774
  | callback | AsyncCallback&lt;void&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
1775 1776 1777 1778

**示例:**

  ```js
A
anyueling 已提交
1779
  downloadTask.resume((err, result)=>{
1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792
      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 已提交
1793 1794
## DownloadConfig

A
anyueling 已提交
1795 1796
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1797 1798 1799 1800 1801
**系统能力**: SystemCapability.MiscServices.Download

| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| url | string | 是 | 资源地址。 |
1802
| 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 已提交
1803 1804
| enableMetered | boolean | 否 | 设置是否允许在按流量计费的连接下下载。<br/>-&nbsp;true:是<br/>-&nbsp;false:否 |
| enableRoaming | boolean | 否 | 设置是否允许在漫游网络中下载。 <br/>-&nbsp;true:是<br/>-&nbsp;false:否|
Z
zengyawen 已提交
1805
| description | string | 否 | 设置下载会话的描述。 |
1806
| filePath<sup>7+</sup> | string | 否 | 设置下载路径(默认在'internal://cache/'路径下)。<br/>-&nbsp;filePath:'workspace/test.txt':默认路径下创建workspace路径,并将文件存储在workspace路径下。<br/>-&nbsp;filePath:'test.txt':将文件存储在默认路径下。<br/>-&nbsp;filePath:'workspace/':默认路径下创建workspace路径,并将文件存储在workspace路径下。 |
A
anyueling 已提交
1807
| networkType | number | 否 | 设置允许下载的网络类型。<br/>-&nbsp;NETWORK_MOBILE:0x00000001<br/>-&nbsp;NETWORK_WIFI:0x00010000|
Z
zengyawen 已提交
1808
| title | string | 否 | 设置下载会话标题。 |
1809
| background<sup>9+</sup> | boolean | 否 | 后台任务通知开关,开启后可在通知中显示下载状态。 |
Z
zengyawen 已提交
1810 1811


Z
zengyawen 已提交
1812
## DownloadInfo<sup>7+</sup>
Z
zengyawen 已提交
1813

A
anyueling 已提交
1814 1815
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1816 1817
**系统能力**: SystemCapability.MiscServices.Download

Z
zengyawen 已提交
1818
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1819
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830
| downloadId | number | 是 | 下载的文件ID。 |
| failedReason | number | 否 | 下载失败原因,可以是任何[ERROR_*](#常量)常量。 |
| fileName | string | 是 | 下载的文件名。 |
| filePath | string | 是 | 存储文件的URI。 |
| pausedReason | number | 否 | 会话暂停的原因,可以是任何[PAUSED_*](#常量)常量。 |
| status | number | 是 | 下载状态代码,可以是任何[SESSION_*](#常量)常量。 |
| targetURI | string | 是 | 下载文件的URI。 |
| downloadTitle | string | 是 | 下载的文件的标题。 |
| downloadTotalBytes | number | 是 | 下载的文件的总大小(int&nbsp;bytes)。 |
| description | string | 是 | 待下载文件的描述信息。 |
| downloadedBytes | number | 是 | 实时下载大小(int&nbsp;&nbsp;bytes)。 |