js-apis-request.md 57.5 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

A
anyueling 已提交
38
上传目前仅支持HTTP请求,不支持HTTPS。
Z
zengyawen 已提交
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

## 常量

**需要权限**: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代码。 |
58 59
| ERROR_OFFLINE<sup>9+</sup> | number | 是 | 否 | 网络未连接。 |
| ERROR_UNSUPPORTED_NETWORK_TYPE<sup>9+</sup> | number | 是 | 否 | 网络类型不匹配。 |
Z
zengyawen 已提交
60 61 62 63 64 65 66 67 68 69 70 71
| 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 已提交
72
## request.uploadFile<sup>9+</sup>
Z
zengyawen 已提交
73

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

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

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

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

82 83 84
**参数:**

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

A
anyueling 已提交
89

90 91 92
**返回值:**

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

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

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

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

105
  ```js
106
  let uploadTask;
A
anyueling 已提交
107
  let uploadConfig = {
A
anyueling 已提交
108
    url: 'http://patch',
A
anyueling 已提交
109 110 111 112 113
    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 已提交
114 115
  try {
    request.uploadFile(globalThis.abilityContext, uploadConfig).then((data) => {
Z
zengyawen 已提交
116
      uploadTask = data;
A
anyueling 已提交
117 118 119 120 121 122
    }).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 已提交
123 124 125
  ```


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

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

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

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

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

136 137
**参数:**

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

A
anyueling 已提交
144 145 146 147 148 149 150
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

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

151
**示例:**
A
anyueling 已提交
152

153
  ```js
154
  let uploadTask;
A
anyueling 已提交
155
  let uploadConfig = {
A
anyueling 已提交
156
    url: 'http://patch',
A
anyueling 已提交
157 158 159 160 161
    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 已提交
162 163
  try {
    request.uploadFile(globalThis.abilityContext, uploadConfig, (err, data) => {
Z
zengyawen 已提交
164 165 166 167 168
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
A
anyueling 已提交
169 170 171 172
    });
  } catch (err) {
    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
  }
Z
zengyawen 已提交
173
  ```
A
anyueling 已提交
174

A
anyueling 已提交
175 176 177
## request.upload<sup>(deprecated)</sup>

upload(config: UploadConfig): Promise&lt;UploadTask&gt;
A
anyueling 已提交
178 179 180

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

A
anyueling 已提交
181 182 183
**模型约束**:此接口仅可在FA模型下使用

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

A
anyueling 已提交
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
**需要权限**:ohos.permission.INTERNET

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

**参数:**

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

**返回值:**

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

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

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


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

A
anyueling 已提交
222
upload(config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
A
anyueling 已提交
223 224 225

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

A
anyueling 已提交
226 227 228
**模型约束**:此接口仅可在FA模型下使用

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

A
anyueling 已提交
230 231 232 233 234
**需要权限**:ohos.permission.INTERNET

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

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

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

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

A
anyueling 已提交
243 244 245
  ```js
  let uploadTask;
  let uploadConfig = {
A
anyueling 已提交
246
    url: 'http://patch',
A
anyueling 已提交
247 248 249 250 251
    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 已提交
252
  request.upload(uploadConfig, (err, data) => {
A
anyueling 已提交
253 254 255 256 257 258 259
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```
Z
zengyawen 已提交
260

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

A
anyueling 已提交
263
upload(context: BaseContext, config: UploadConfig): Promise&lt;UploadTask&gt;
264 265 266

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

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

269 270 271 272 273 274
**需要权限**:ohos.permission.INTERNET

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

**参数:**

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

**返回值:**

A
anyueling 已提交
283
  | 类型 | 说明 |
284
  | -------- | -------- |
A
anyueling 已提交
285
  | Promise&lt;[UploadTask](#uploadtask)&gt; | 返回上传任务。 |
286 287 288 289 290 291

**示例:**

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


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

A
anyueling 已提交
308
upload(context: BaseContext, config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
309 310 311

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

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

314 315 316 317 318 319
**需要权限**:ohos.permission.INTERNET

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

**参数:**

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

**示例:**

  ```js
  let uploadTask;
  let uploadConfig = {
A
anyueling 已提交
331
    url: 'http://patch',
332 333 334 335 336
    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 已提交
337
  request.upload(globalThis.abilityContext, uploadConfig, (err, data) => {
338 339 340 341 342 343 344 345
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```

Z
zengyawen 已提交
346 347
## UploadTask

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

Z
zengyawen 已提交
350 351 352 353


### on('progress')

Z
zengyawen 已提交
354
on(type: 'progress', callback:(uploadedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
355 356 357 358 359 360 361

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

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

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

362 363 364
**参数:**

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

369
  回调函数的参数
Z
zengyawen 已提交
370

371 372
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
373 374
| uploadedSize | number | 是 | 当前已上传文件大小,单位为B。 |
| totalSize | number | 是 | 上传文件的总大小,单位为B。 |
Z
zengyawen 已提交
375

376
**示例:**
A
anyueling 已提交
377

378
  ```js
Z
zengyawen 已提交
379
  uploadTask.on('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
380 381
      console.info("upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize);
  }
Z
zengyawen 已提交
382
  );
Z
zengyawen 已提交
383 384 385 386 387
  ```


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

Z
zengyawen 已提交
388
on(type: 'headerReceive', callback:  (header: object) =&gt; void): void
Z
zengyawen 已提交
389 390 391 392 393 394 395

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

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

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

396 397 398
**参数:**

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

  回调函数的参数:

405 406 407
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
408

409
**示例:**
A
anyueling 已提交
410

411
  ```js
Z
zengyawen 已提交
412
  uploadTask.on('headerReceive', function callback(headers){   
Z
zengyawen 已提交
413 414
      console.info("upOnHeader headers:" + JSON.stringify(headers));
  }
Z
zengyawen 已提交
415
  );
Z
zengyawen 已提交
416 417 418
  ```


A
修改  
anyueling 已提交
419
### on('complete' | 'fail')<sup>9+</sup>
A
anyueling 已提交
420 421 422 423 424 425 426 427 428 429 430 431 432 433

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

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

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

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

**参数:**

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

  回调函数的参数

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

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

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

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


Z
zengyawen 已提交
461 462
### off('progress')

Z
zengyawen 已提交
463
off(type:  'progress',  callback?: (uploadedSize: number, totalSize: number) =&gt;  void): void
Z
zengyawen 已提交
464 465 466 467 468 469 470

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

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

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

471 472
**参数:**

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

  回调函数的参数:

480 481
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
482 483
| uploadedSize | number | 是 | 当前已上传文件的大小,单位为B。 |
| totalSize | number | 是 | 上传文件的总大小,单位为B。 |
Z
zengyawen 已提交
484

485
**示例:**
A
anyueling 已提交
486

487
  ```js
Z
zengyawen 已提交
488
  uploadTask.off('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
489 490
      console.info('uploadedSize: ' + uploadedSize, 'totalSize: ' + totalSize);
  }
Z
zengyawen 已提交
491
  );
Z
zengyawen 已提交
492 493 494 495 496
  ```


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

Z
zengyawen 已提交
497
off(type: 'headerReceive', callback?: (header: object) =&gt; void): void
Z
zengyawen 已提交
498 499 500 501 502 503 504

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

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

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

505 506
**参数:**

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

  回调函数的参数:

514 515 516
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
517

518
**示例:**
A
anyueling 已提交
519

520
  ```js
Z
zengyawen 已提交
521
  uploadTask.off('headerReceive', function callback(headers) {
Z
zengyawen 已提交
522 523
      console.info("upOnHeader headers:" + JSON.stringify(headers));
  }
Z
zengyawen 已提交
524
  );
Z
zengyawen 已提交
525 526
  ```

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

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

A
修改  
anyueling 已提交
531
关闭上传任务监听,异步方法,使用callback形式返回结果。
A
anyueling 已提交
532 533 534 535 536 537 538 539 540 541

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

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

**参数:**

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

  回调函数的参数

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

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

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

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

A
anyueling 已提交
568 569
### delete<sup>9+</sup>
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
570 571 572 573 574 575 576

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

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

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

577 578 579
**返回值:**

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

583
**示例:**
A
anyueling 已提交
584

585
  ```js
A
anyueling 已提交
586
  uploadTask.delete().then((result) => {
Z
zengyawen 已提交
587 588 589 590 591 592 593 594 595 596 597
      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 已提交
598
### delete<sup>9+</sup>
Z
zengyawen 已提交
599

A
anyueling 已提交
600
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
601 602 603 604 605 606 607

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

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

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

608 609
**参数:**

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

614
**示例:**
A
anyueling 已提交
615

616
  ```js
A
anyueling 已提交
617
  uploadTask.delete((err, result) => {
Z
zengyawen 已提交
618 619 620 621 622 623 624 625 626 627 628 629 630
      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 已提交
631
### remove<sup>(deprecated)</sup>
632

A
anyueling 已提交
633
remove(): Promise&lt;boolean&gt;
634 635 636

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

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

639 640 641 642 643 644
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
645
  | 类型 | 说明 |
646
  | -------- | -------- |
A
anyueling 已提交
647
  | Promise&lt;boolean&gt; | 移除任务是否成功。true:成功,false:不成功。 |
648 649 650 651

**示例:**

  ```js
A
anyueling 已提交
652
  uploadTask.remove().then((result) => {
653 654 655 656 657 658 659 660 661 662 663
      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 已提交
664
### remove<sup>(deprecated)</sup>
665

A
anyueling 已提交
666
remove(callback: AsyncCallback&lt;boolean&gt;): void
667 668 669

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

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

672 673 674 675 676 677
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
678
  | 参数名 | 类型 | 必填 | 说明 |
679
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
680
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务的回调函数。 |
681 682 683 684

**示例:**

  ```js
A
anyueling 已提交
685
  uploadTask.remove((err, result) => {
686 687 688 689 690 691 692 693 694 695 696 697
      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 已提交
698 699
## UploadConfig

A
anyueling 已提交
700 701
**需要权限**:ohos.permission.INTERNET

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

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

A
修改  
anyueling 已提交
712
## TaskState<sup>9+</sup>
A
anyueling 已提交
713 714 715 716 717 718 719 720 721 722

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

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

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

## File

A
anyueling 已提交
726 727
**需要权限**:ohos.permission.INTERNET

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

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


## RequestData

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

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

Z
zengyawen 已提交
744
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
745
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
746 747
| name | string | 是 | 表示表单元素的名称。 |
| value | string | 是 | 表示表单元素的值。 |
Z
zengyawen 已提交
748

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

A
anyueling 已提交
751
downloadFile(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
Z
zengyawen 已提交
752 753 754 755 756 757 758

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

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

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

759 760 761
**参数:**

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

766 767 768
**返回值:**

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

A
anyueling 已提交
772 773 774 775 776 777 778 779 780
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

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

781
**示例:**
A
anyueling 已提交
782

783
  ```js
784
  let downloadTask;
A
anyueling 已提交
785 786 787 788 789 790 791 792 793
  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 已提交
794 795 796
  ```


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

A
anyueling 已提交
799
downloadFile(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
Z
zengyawen 已提交
800 801 802 803 804 805 806

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

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

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

807 808
**参数:**

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

A
anyueling 已提交
815 816 817 818 819 820 821 822 823
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

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

824
**示例:**
A
anyueling 已提交
825

826
  ```js
827
  let downloadTask;
A
anyueling 已提交
828 829 830 831 832 833 834 835 836 837 838 839
  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 已提交
840 841
  ```

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

A
anyueling 已提交
844
download(config: DownloadConfig): Promise&lt;DownloadTask&gt;
A
anyueling 已提交
845 846 847

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

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

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

A
anyueling 已提交
852 853 854 855 856 857 858 859 860 861 862 863 864 865 866
**需要权限**:ohos.permission.INTERNET

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

**参数:**

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

**返回值:**

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

A
anyueling 已提交
868
**示例:**
A
anyueling 已提交
869

A
anyueling 已提交
870 871
  ```js
  let downloadTask;
A
anyueling 已提交
872
  request.download({ url: 'https://xxxx/xxxx.hap' }).then((data) => {
A
anyueling 已提交
873 874 875 876 877 878 879
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


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

A
anyueling 已提交
882
download(config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void
A
anyueling 已提交
883 884 885

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

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

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

A
anyueling 已提交
890 891 892 893 894 895
**需要权限**:ohos.permission.INTERNET

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

**参数:**

896
  | 参数名 | 类型 | 必填 | 说明 |
A
anyueling 已提交
897 898
  | -------- | -------- | -------- | -------- |
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
899
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
A
anyueling 已提交
900 901

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

A
anyueling 已提交
903 904
  ```js
  let downloadTask;
A
anyueling 已提交
905
  request.download({ url: 'https://xxxx/xxxxx.hap', 
A
anyueling 已提交
906 907 908 909 910 911 912 913
  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
      if (err) {
          console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
          return;
      }
      downloadTask = data;
  });
  ```
914

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

A
anyueling 已提交
917
download(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
918 919 920

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

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

923 924 925 926 927 928
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
929
  | 参数名 | 类型 | 必填 | 说明 |
930
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
931
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
932
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
933 934 935

**返回值:**

A
anyueling 已提交
936
  | 类型 | 说明 |
937
  | -------- | -------- |
A
anyueling 已提交
938
  | Promise&lt;[DownloadTask](#downloadtask)&gt; | 返回下载任务。 |
939 940 941 942 943

**示例:**

  ```js
  let downloadTask;
A
anyueling 已提交
944
  request.download(globalThis.abilityContext, { url: 'https://xxxx/xxxx.hap' }).then((data) => {
945 946 947 948 949 950 951
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


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

A
anyueling 已提交
954
download(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
955 956 957

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

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

960 961 962 963 964 965
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
966
  | 参数名 | 类型 | 必填 | 说明 |
967
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
968
  | context | [BaseContext](js-apis-inner-application-baseContext.md) | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
969 970
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
971 972 973 974 975

**示例:**

  ```js
  let downloadTask;
A
anyueling 已提交
976
  request.download(globalThis.abilityContext, { url: 'https://xxxx/xxxxx.hap', 
977 978 979 980 981 982 983 984 985 986
  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
      if (err) {
          console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
          return;
      }
      downloadTask = data;
  });
  ```


Z
zengyawen 已提交
987 988
## DownloadTask

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


### on('progress')

Z
zengyawen 已提交
994
on(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
995 996 997 998 999 1000 1001

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

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

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

1002 1003 1004
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1005
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1006 1007
  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 是 | 下载的回调函数。 |
Z
zengyawen 已提交
1008 1009 1010

  回调函数的参数:

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

1016
**示例:**
A
anyueling 已提交
1017

1018
  ```js
1019
  downloadTask.on('progress', function download_callback(receivedSize, totalSize) {
Z
zengyawen 已提交
1020 1021
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
1022
  );
Z
zengyawen 已提交
1023 1024 1025 1026 1027
  ```


### off('progress')

Z
zengyawen 已提交
1028
off(type: 'progress', callback?: (receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
1029 1030 1031 1032 1033 1034 1035

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

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

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

1036 1037
**参数:**

1038
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1039
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1040 1041
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 否 | 下载任务的回调函数。 |
Z
zengyawen 已提交
1042 1043 1044

  回调函数的参数:

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

1050
**示例:**
A
anyueling 已提交
1051

1052
  ```js
1053 1054 1055
  downloadTask .off('progress', function download_callback(receivedSize, totalSize) {
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
1056
  );
Z
zengyawen 已提交
1057 1058 1059
  ```


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

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

Z
zengyawen 已提交
1064
开启下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
1065 1066 1067 1068 1069

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

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

1070 1071 1072
**参数:**

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

1077
**示例:**
A
anyueling 已提交
1078

1079
  ```js
1080 1081 1082
  downloadTask.on('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
1083
  );
Z
zengyawen 已提交
1084 1085 1086
  ```


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

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

Z
zengyawen 已提交
1091
取消下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
1092 1093 1094 1095 1096

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

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

1097 1098 1099
**参数:**

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

1104
**示例:**
A
anyueling 已提交
1105

1106
  ```js
1107 1108 1109
  downloadTask.off('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
1110
  );
Z
zengyawen 已提交
1111 1112 1113 1114 1115
  ```


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

Z
zengyawen 已提交
1116
on(type: 'fail', callback: (err: number) =&gt; void): void
Z
zengyawen 已提交
1117 1118 1119 1120 1121 1122 1123

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

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

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

1124 1125 1126
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1127
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1128 1129
  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 是 | 下载失败的回调函数。 |
Z
zengyawen 已提交
1130 1131 1132

  回调函数的参数:

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

1137
**示例:**
A
anyueling 已提交
1138

1139
  ```js 
1140 1141 1142
  downloadTask.on('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  }
Z
zengyawen 已提交
1143
  );
Z
zengyawen 已提交
1144 1145 1146 1147 1148
  ```


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

Z
zengyawen 已提交
1149
off(type: 'fail', callback?: (err: number) =&gt; void): void
Z
zengyawen 已提交
1150 1151 1152 1153 1154 1155 1156

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

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

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

1157 1158 1159
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1160
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1161 1162
  | type | string | 是 | 取消订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 否 | 取消下载失败的回调函数。 |
Z
zengyawen 已提交
1163 1164 1165

  回调函数的参数

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

1170
**示例:**
A
anyueling 已提交
1171

1172
  ```js
1173 1174 1175
  downloadTask.off('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  } 
Z
zengyawen 已提交
1176
  );
Z
zengyawen 已提交
1177 1178
  ```

A
anyueling 已提交
1179
  ### delete<sup>9+</sup>
Z
zengyawen 已提交
1180

A
anyueling 已提交
1181
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1182 1183 1184 1185 1186 1187 1188

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

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

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

1189 1190 1191
**返回值:**

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

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

1197
  ```js
A
anyueling 已提交
1198
  downloadTask.delete().then((result) => {
Z
zengyawen 已提交
1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209
      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 已提交
1210
### delete<sup>9+</sup>
Z
zengyawen 已提交
1211

A
anyueling 已提交
1212
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
1213 1214 1215 1216 1217 1218 1219

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

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

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

1220 1221
**参数:**

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

1226
**示例:**
A
anyueling 已提交
1227

1228
  ```js
A
anyueling 已提交
1229
  downloadTask.delete((err, result)=>{
Z
zengyawen 已提交
1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242
      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 已提交
1243
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1244

A
anyueling 已提交
1245
getTaskInfo(): Promise&lt;DownloadInfo&gt;
Z
zengyawen 已提交
1246 1247 1248 1249 1250 1251 1252

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

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

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

1253 1254 1255
**返回值:**

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

1259
**示例:**
A
anyueling 已提交
1260

1261
  ```js
A
anyueling 已提交
1262
  downloadTask.getTaskInfo().then((downloadInfo) => {    
Z
zengyawen 已提交
1263
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
Z
zengyawen 已提交
1264 1265 1266 1267 1268 1269
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


A
anyueling 已提交
1270
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1271

A
anyueling 已提交
1272
getTaskInfo(callback: AsyncCallback&lt;DownloadInfo&gt;): void
Z
zengyawen 已提交
1273 1274 1275 1276 1277 1278 1279

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

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

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

1280 1281
**参数:**

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

1286
**示例:**
A
anyueling 已提交
1287

1288
  ```js
A
anyueling 已提交
1289
  downloadTask.getTaskInfo((err, downloadInfo)=>{
Z
zengyawen 已提交
1290 1291 1292 1293 1294 1295 1296 1297 1298
      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 已提交
1299
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1300

A
anyueling 已提交
1301
getTaskMimeType(): Promise&lt;string&gt;
Z
zengyawen 已提交
1302 1303 1304 1305 1306 1307 1308

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

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

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

1309 1310 1311
**返回值:**

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

1315
**示例:**
A
anyueling 已提交
1316

1317
  ```js
A
anyueling 已提交
1318
  downloadTask.getTaskMimeType().then((data) => {    
Z
zengyawen 已提交
1319 1320 1321 1322 1323 1324 1325
      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 已提交
1326
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1327

A
anyueling 已提交
1328
getTaskMimeType(callback: AsyncCallback&lt;string&gt;): void;
Z
zengyawen 已提交
1329 1330 1331 1332 1333 1334 1335

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

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

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

1336 1337
**参数:**

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

1342
**示例:**
A
anyueling 已提交
1343

1344
  ```js
A
anyueling 已提交
1345
  downloadTask.getTaskMimeType((err, data)=>{
Z
zengyawen 已提交
1346 1347 1348 1349 1350 1351 1352 1353 1354
      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 已提交
1355
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1356

A
anyueling 已提交
1357
suspend(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1358 1359 1360 1361 1362 1363 1364

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

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

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

1365 1366 1367
**返回值:**

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

1371
**示例:**
A
anyueling 已提交
1372

1373
  ```js
A
anyueling 已提交
1374
  downloadTask.suspend().then((result) => {    
Z
zengyawen 已提交
1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385
      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 已提交
1386
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1387

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

Z
zengyawen 已提交
1390 1391 1392 1393 1394 1395
暂停下载任务,异步方法,使用callback形式返回结果。

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

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

1396 1397
**参数:**

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

1402
**示例:**
A
anyueling 已提交
1403

1404
  ```js
A
anyueling 已提交
1405
  downloadTask.suspend((err, result)=>{
Z
zengyawen 已提交
1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418
      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 已提交
1419
### restore<sup>9+</sup>
Z
zengyawen 已提交
1420

A
anyueling 已提交
1421
restore(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1422 1423 1424 1425 1426 1427 1428

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

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

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

1429
**返回值:**
1430 1431

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

1435
**示例:**
A
anyueling 已提交
1436

1437
  ```js
A
anyueling 已提交
1438
  downloadTask.restore().then((result) => {
Z
zengyawen 已提交
1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450
      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 已提交
1451
### restore<sup>9+</sup>
Z
zengyawen 已提交
1452

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

Z
zengyawen 已提交
1455 1456 1457 1458 1459 1460
重新启动暂停的下载任务,异步方法,使用callback形式返回结果。

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

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

1461 1462
**参数:**

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

1467
**示例:**
A
anyueling 已提交
1468

1469
  ```js
A
anyueling 已提交
1470
  downloadTask.restore((err, result)=>{
Z
zengyawen 已提交
1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483
      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.');
      }
  });
  ```


1484

A
anyueling 已提交
1485 1486 1487
### remove<sup>(deprecated)</sup>

remove(): Promise&lt;boolean&gt;
1488 1489 1490

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

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

1493 1494 1495 1496 1497 1498
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1499
  | 类型 | 说明 |
1500
  | -------- | -------- |
A
anyueling 已提交
1501
  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
1502 1503 1504 1505

**示例:**

  ```js
A
anyueling 已提交
1506
  downloadTask.remove().then((result) => {
1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517
      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 已提交
1518
### remove<sup>(deprecated)</sup>
1519

A
anyueling 已提交
1520
remove(callback: AsyncCallback&lt;boolean&gt;): void
1521 1522 1523

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

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

1526 1527 1528 1529 1530 1531
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1532
  | 参数名 | 类型 | 必填 | 说明 |
1533
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1534
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
1535 1536 1537 1538

**示例:**

  ```js
A
anyueling 已提交
1539
  downloadTask.remove((err, result)=>{
1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552
      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 已提交
1553
### query<sup>(deprecated)</sup>
1554

A
anyueling 已提交
1555
query(): Promise&lt;DownloadInfo&gt;
1556 1557 1558

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

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

1561 1562 1563 1564
**需要权限**:ohos.permission.INTERNET

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

1565 1566
**返回值:**

A
anyueling 已提交
1567 1568 1569
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
1570 1571 1572 1573

**示例:**

  ```js
A
anyueling 已提交
1574
  downloadTask.query().then((downloadInfo) => {    
1575 1576 1577 1578 1579 1580 1581
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


A
anyueling 已提交
1582
### query<sup>(deprecated)</sup>
1583

A
anyueling 已提交
1584
query(callback: AsyncCallback&lt;DownloadInfo&gt;): void
1585 1586 1587

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

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

1590 1591 1592 1593 1594 1595
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1596
  | 参数名 | 类型 | 必填 | 说明 |
1597
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1598
  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
1599 1600 1601 1602

**示例:**

  ```js
A
anyueling 已提交
1603
  downloadTask.query((err, downloadInfo)=>{
1604 1605 1606 1607 1608 1609 1610 1611 1612
      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 已提交
1613
### queryMimeType<sup>(deprecated)</sup>
1614

A
anyueling 已提交
1615
queryMimeType(): Promise&lt;string&gt;
1616 1617 1618

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

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

1621 1622 1623 1624 1625 1626
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1627
  | 类型 | 说明 |
1628
  | -------- | -------- |
A
anyueling 已提交
1629
  | Promise&lt;string&gt; | 查询下载任务的MimeType。 |
1630 1631 1632 1633

**示例:**

  ```js
A
anyueling 已提交
1634
  downloadTask.queryMimeType().then((data) => {    
1635 1636 1637 1638 1639 1640 1641
      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 已提交
1642
### queryMimeType<sup>(deprecated)</sup>
1643

A
anyueling 已提交
1644
queryMimeType(callback: AsyncCallback&lt;string&gt;): void;
1645 1646 1647

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

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

1650 1651 1652 1653 1654 1655
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1656
  | 参数名 | 类型 | 必填 | 说明 |
1657
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1658
  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的MimeType的回调函数。 |
1659 1660 1661 1662

**示例:**

  ```js
A
anyueling 已提交
1663
  downloadTask.queryMimeType((err, data)=>{
1664 1665 1666 1667 1668 1669 1670 1671 1672
      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 已提交
1673
### pause<sup>(deprecated)</sup>
1674

A
anyueling 已提交
1675
pause(): Promise&lt;void&gt;
1676 1677 1678

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

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

1681 1682 1683 1684 1685 1686
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1687
  | 类型 | 说明 |
1688
  | -------- | -------- |
A
anyueling 已提交
1689
  | Promise&lt;void&gt; | 暂停下载任务是否成功。 |
1690 1691 1692 1693

**示例:**

  ```js
A
anyueling 已提交
1694
  downloadTask.pause().then((result) => {    
1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705
      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 已提交
1706
### pause<sup>(deprecated)</sup>
1707

A
anyueling 已提交
1708 1709 1710
pause(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9-1)替代。
1711 1712 1713 1714 1715 1716 1717 1718 1719

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

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

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

**参数:**

A
anyueling 已提交
1720
  | 参数名 | 类型 | 必填 | 说明 |
1721
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1722
  | callback | AsyncCallback&lt;void&gt; | 是 | 暂停下载任务的回调函数。 |
1723 1724 1725 1726

**示例:**

  ```js
A
anyueling 已提交
1727
  downloadTask.pause((err, result)=>{
1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740
      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 已提交
1741
### resume<sup>(deprecated)</sup>
1742

A
anyueling 已提交
1743
resume(): Promise&lt;void&gt;
1744 1745 1746

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

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

1749 1750 1751 1752
**需要权限**:ohos.permission.INTERNET

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

1753
**返回值:**
1754

A
anyueling 已提交
1755
  | 类型 | 说明 |
1756
  | -------- | -------- |
A
anyueling 已提交
1757
  | Promise&lt;void&gt; | 重新启动暂停的下载任务是否成功。 |
1758 1759 1760 1761

**示例:**

  ```js
A
anyueling 已提交
1762
  downloadTask.resume().then((result) => {
1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774
      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 已提交
1775
### resume<sup>(deprecated)</sup>
1776

A
anyueling 已提交
1777 1778 1779
resume(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9-1)替代。
1780 1781 1782 1783 1784 1785 1786 1787 1788

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

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

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

**参数:**

A
anyueling 已提交
1789
  | 参数名 | 类型 | 必填 | 说明 |
1790
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1791
  | callback | AsyncCallback&lt;void&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
1792 1793 1794 1795

**示例:**

  ```js
A
anyueling 已提交
1796
  downloadTask.resume((err, result)=>{
1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809
      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 已提交
1810 1811
## DownloadConfig

A
anyueling 已提交
1812 1813
**需要权限**:ohos.permission.INTERNET

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

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


Z
zengyawen 已提交
1829
## DownloadInfo<sup>7+</sup>
Z
zengyawen 已提交
1830

A
anyueling 已提交
1831 1832
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1833 1834
**系统能力**: SystemCapability.MiscServices.Download

Z
zengyawen 已提交
1835
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1836
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847
| 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)。 |