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

Z
zengyawen 已提交
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67


## 常量

**需要权限**: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代码。 |
| 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 已提交
68
## request.upload
Z
zengyawen 已提交
69 70 71 72 73

upload(config: UploadConfig): Promise&lt;UploadTask&gt;

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

A
anyueling 已提交
74 75
此接口仅可在FA模型下使用

Z
zengyawen 已提交
76 77 78 79
**需要权限**:ohos.permission.INTERNET

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

80 81 82
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
83
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
84
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
Z
zengyawen 已提交
85

86 87 88
**返回值:**

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

92
**示例:**
Z
zengyawen 已提交
93
  
94
  ```js
95
  let uploadTask;
A
anyueling 已提交
96 97 98 99 100 101 102 103
  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" }],
  };
  request.upload(uploadConfig).then((data) => {
Z
zengyawen 已提交
104 105 106 107 108 109 110
      uploadTask = data;
  }).catch((err) => {
      console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
  })
  ```


A
anyueling 已提交
111
## request.upload
Z
zengyawen 已提交
112 113 114 115 116

upload(config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void

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

A
anyueling 已提交
117 118
此接口仅可在FA模型下使用

Z
zengyawen 已提交
119 120 121 122
**需要权限**:ohos.permission.INTERNET

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

123 124 125
**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
Z
zengyawen 已提交
126
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
127 128
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 否 | 回调函数,异步返回UploadTask对象。 |
Z
zengyawen 已提交
129

130
**示例:**
Z
zengyawen 已提交
131
  
132
  ```js
133
  let uploadTask;
A
anyueling 已提交
134 135 136 137 138 139 140 141
  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" }],
  };
  request.upload(uploadConfig, (err, data) => {
Z
zengyawen 已提交
142 143 144 145 146 147 148
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```
A
anyueling 已提交
149 150
## request.upload<sup>9+</sup>

A
anyueling 已提交
151
upload(context: BaseContext, config: UploadConfig): Promise&lt;UploadTask&gt;
A
anyueling 已提交
152 153 154 155 156 157 158 159 160 161 162

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

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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
163
  | context | BaseContext | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
  

**返回值:**

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

**示例:**
  
  ```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 已提交
183
  };
A
anyueling 已提交
184 185 186 187
  request.upload(globalThis.abilityContext, uploadConfig).then((data) => {
      uploadTask = data;
  }).catch((err) => {
      console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
A
anyueling 已提交
188
  });
A
anyueling 已提交
189 190 191 192 193
  ```


## request.upload<sup>9+</sup>

A
anyueling 已提交
194
upload(context: BaseContext, config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void
A
anyueling 已提交
195 196 197 198 199 200 201 202

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

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

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

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

A
anyueling 已提交
204 205
  | 参数名 | 参数类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
206
  | context | BaseContext | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
  | config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 |
  | callback | AsyncCallback&lt;[UploadTask](#uploadtask)&gt; | 否 | 回调函数,异步返回UploadTask对象。 |

**示例:**
  
  ```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" }],
  };
  request.upload(globalThis.abilityContext, uploadConfig, (err, data) => {
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```
Z
zengyawen 已提交
229 230 231 232 233 234 235 236

## UploadTask

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


### on('progress')

Z
zengyawen 已提交
237
on(type: 'progress', callback:(uploadedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
238 239 240 241 242 243 244

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

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

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

245 246 247
**参数:**

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

252
  回调函数的参数
Z
zengyawen 已提交
253

254 255 256 257
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| uploadedSize | number | 是 | 当前已上传文件大小,单位为KB。 |
| totalSize | number | 是 | 上传文件的总大小,单位为KB。 |
Z
zengyawen 已提交
258

259
**示例:**
Z
zengyawen 已提交
260
  
261
  ```js
Z
zengyawen 已提交
262
  uploadTask.on('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
263 264
      console.info("upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize);
  }
Z
zengyawen 已提交
265
  );
Z
zengyawen 已提交
266 267 268 269 270
  ```


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

Z
zengyawen 已提交
271
on(type: 'headerReceive', callback:  (header: object) =&gt; void): void
Z
zengyawen 已提交
272 273 274 275 276 277 278

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

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

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

279 280 281
**参数:**

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

  回调函数的参数:

288 289 290
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
291

292
**示例:**
Z
zengyawen 已提交
293
  
294
  ```js
Z
zengyawen 已提交
295
  uploadTask.on('headerReceive', function callback(headers){   
Z
zengyawen 已提交
296 297
      console.info("upOnHeader headers:" + JSON.stringify(headers));
  }
Z
zengyawen 已提交
298
  );
Z
zengyawen 已提交
299 300 301
  ```


A
修改  
anyueling 已提交
302
### on('complete' | 'fail')<sup>9+</sup>
A
anyueling 已提交
303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

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

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

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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 订阅的事件类型,取值为'complete',表示上传任务完成;取值为'fail',表示上传任务失败。|
  | callback | function | 是 | 上传任务完成或失败的回调函数。 |

  回调函数的参数

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

**示例:**
  
  ```js
A
修改  
anyueling 已提交
328 329 330
  uploadTask.on('complete', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnComplete taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
331 332 333 334
    }
  }
  );

A
修改  
anyueling 已提交
335 336 337
  uploadTask.on('fail', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnFail taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
338 339 340 341 342 343
    }
  }
  );
  ```


Z
zengyawen 已提交
344 345
### off('progress')

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

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

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

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

354 355 356
**参数:**

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

  回调函数的参数:

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

368
**示例:**
Z
zengyawen 已提交
369
  
370
  ```js
Z
zengyawen 已提交
371
  uploadTask.off('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
372 373
      console.info('uploadedSize: ' + uploadedSize, 'totalSize: ' + totalSize);
  }
Z
zengyawen 已提交
374
  );
Z
zengyawen 已提交
375 376 377 378 379
  ```


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

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

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

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

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

388 389 390
**参数:**

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

  回调函数的参数:

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

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

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

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

A
修改  
anyueling 已提交
414
关闭上传任务监听,异步方法,使用callback形式返回结果。
A
anyueling 已提交
415 416 417 418 419 420 421 422 423 424

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

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

**参数:**

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

  回调函数的参数

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

**示例:**
  
  ```js
A
修改  
anyueling 已提交
436 437 438
  uploadTask.off('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
    }
  }
  );
A
anyueling 已提交
442

A
修改  
anyueling 已提交
443 444 445
  uploadTask.off('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
    }
  }
  );
A
anyueling 已提交
449 450
  ```

Z
zengyawen 已提交
451 452 453 454 455 456 457 458 459 460 461

### remove

remove(): Promise&lt;boolean&gt;

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

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

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

462 463 464
**返回值:**

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

468
**示例:**
Z
zengyawen 已提交
469
  
470
  ```js
Z
zengyawen 已提交
471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492
  uploadTask.remove().then((result) => {
      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));
  });
  ```


### remove

remove(callback: AsyncCallback&lt;boolean&gt;): void

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

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

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

493 494 495
**参数:**

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

499
**示例:**
Z
zengyawen 已提交
500
  
501
  ```js
Z
zengyawen 已提交
502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517
  uploadTask.remove((err, result) => {
      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.');
      }
  });
  ```


## UploadConfig

A
anyueling 已提交
518 519
**需要权限**:ohos.permission.INTERNET

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

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

A
修改  
anyueling 已提交
530
## TaskState<sup>9+</sup>
A
anyueling 已提交
531 532 533 534 535 536 537 538 539 540

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

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

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

## File

A
anyueling 已提交
544 545 546
**需要权限**:ohos.permission.INTERNET

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

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


## RequestData

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

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

Z
zengyawen 已提交
562
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
563
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
564 565
| name | string | 是 | 表示表单元素的名称。 |
| value | string | 是 | 表示表单元素的值。 |
Z
zengyawen 已提交
566 567


A
anyueling 已提交
568
## request.download
Z
zengyawen 已提交
569 570 571 572 573

download(config: DownloadConfig): Promise&lt;DownloadTask&gt;

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

A
anyueling 已提交
574 575
此接口仅可在FA模型下使用

Z
zengyawen 已提交
576 577 578 579
**需要权限**:ohos.permission.INTERNET

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

580 581 582
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
583
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
584
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
Z
zengyawen 已提交
585

586 587 588
**返回值:**

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

592
**示例:**
Z
zengyawen 已提交
593
  
594
  ```js
595
  let downloadTask;
Z
zengyawen 已提交
596 597 598 599 600 601 602 603
  request.download({ url: 'https://xxxx/xxxx.hap' }).then((data) => {
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


A
anyueling 已提交
604
## request.download
Z
zengyawen 已提交
605 606 607 608 609

download(config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void

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

A
anyueling 已提交
610 611
此接口仅可在FA模型下使用

Z
zengyawen 已提交
612 613 614 615
**需要权限**:ohos.permission.INTERNET

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

616 617 618
**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
Z
zengyawen 已提交
619
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
620 621
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 否 | 下载接口的回调函数。 |
Z
zengyawen 已提交
622

623
**示例:**
Z
zengyawen 已提交
624
  
625
  ```js
626
  let downloadTask;
Z
zengyawen 已提交
627 628 629 630 631 632 633 634 635 636
  request.download({ 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;
  });
  ```

A
anyueling 已提交
637 638
## request.download<sup>9+</sup>

A
anyueling 已提交
639
download(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
A
anyueling 已提交
640 641 642 643 644 645 646 647 648 649 650

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

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

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

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
651
  | context | BaseContext | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
652 653 654 655 656 657 658
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |

**返回值:**

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

A
anyueling 已提交
660 661 662 663 664 665 666 667 668 669 670 671 672 673
**示例:**
  
  ```js
  let downloadTask;
  request.download(globalThis.abilityContext, { url: 'https://xxxx/xxxx.hap' }).then((data) => {
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


## request.download<sup>9+</sup>

A
anyueling 已提交
674
download(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
A
anyueling 已提交
675 676 677 678 679 680 681 682 683 684 685

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

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

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

**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
686
  | context | BaseContext | 是 | 基于应用程序的上下文。 |
A
anyueling 已提交
687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 否 | 下载接口的回调函数。 |

**示例:**
  
  ```js
  let downloadTask;
  request.download(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;
  });
  ```
Z
zengyawen 已提交
703 704 705 706 707 708 709
## DownloadTask

下载任务。


### on('progress')

Z
zengyawen 已提交
710
on(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
711 712 713 714 715 716 717

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

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

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

718 719 720
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
721
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
722 723
  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 是 | 下载的回调函数。 |
Z
zengyawen 已提交
724 725 726

  回调函数的参数:

727 728 729 730
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| receivedSize | number | 是 | 当前下载的进度,单位为KB。 |
| totalSize | number | 是 | 下载文件的总大小,单位为KB。 |
Z
zengyawen 已提交
731

732
**示例:**
Z
zengyawen 已提交
733
  
734
  ```js
735
  downloadTask.on('progress', function download_callback(receivedSize, totalSize) {
Z
zengyawen 已提交
736 737
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
738
  );
Z
zengyawen 已提交
739 740 741 742 743
  ```


### off('progress')

Z
zengyawen 已提交
744
off(type: 'progress', callback?: (receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
745 746 747 748 749 750 751

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

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

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

752 753 754
**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
Z
zengyawen 已提交
755
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
756 757
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 否 | 下载任务的回调函数。 |
Z
zengyawen 已提交
758 759 760

  回调函数的参数:

761 762 763 764
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| receivedSize | number | 是 | 当前下载的进度。 |
| totalSize | number | 是 | 下载文件的总大小。 |
Z
zengyawen 已提交
765

766
**示例:**
Z
zengyawen 已提交
767
  
768
  ```js
769 770 771
  downloadTask .off('progress', function download_callback(receivedSize, totalSize) {
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
772
  );
Z
zengyawen 已提交
773 774 775
  ```


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

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

Z
zengyawen 已提交
780
开启下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
781 782 783 784 785

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

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

786 787 788
**参数:**

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

793
**示例:**
Z
zengyawen 已提交
794
  
795
  ```js
796 797 798
  downloadTask.on('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
799
  );
Z
zengyawen 已提交
800 801 802
  ```


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

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

Z
zengyawen 已提交
807
取消下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
808 809 810 811 812

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

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

813 814 815
**参数:**

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

820
**示例:**
Z
zengyawen 已提交
821
  
822
  ```js
823 824 825
  downloadTask.off('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
826
  );
Z
zengyawen 已提交
827 828 829 830 831
  ```


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

Z
zengyawen 已提交
832
on(type: 'fail', callback: (err: number) =&gt; void): void
Z
zengyawen 已提交
833 834 835 836 837 838 839

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

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

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

840 841 842
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
843
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
844 845
  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 是 | 下载失败的回调函数。 |
Z
zengyawen 已提交
846 847 848

  回调函数的参数:

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

853
**示例:**
Z
zengyawen 已提交
854
  
855
  ```js 
856 857 858
  downloadTask.on('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  }
Z
zengyawen 已提交
859
  );
Z
zengyawen 已提交
860 861 862 863 864
  ```


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

Z
zengyawen 已提交
865
off(type: 'fail', callback?: (err: number) =&gt; void): void
Z
zengyawen 已提交
866 867 868 869 870 871 872

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

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

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

873 874 875
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
876
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
877 878
  | type | string | 是 | 取消订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 否 | 取消下载失败的回调函数。 |
Z
zengyawen 已提交
879 880 881

  回调函数的参数

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

886
**示例:**
Z
zengyawen 已提交
887
  
888
  ```js
889 890 891
  downloadTask.off('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  } 
Z
zengyawen 已提交
892
  );
Z
zengyawen 已提交
893 894 895 896 897 898 899 900 901 902 903 904 905
  ```


### remove

remove(): Promise&lt;boolean&gt;

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

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

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

906 907 908
**返回值:**

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

912
**示例:**
Z
zengyawen 已提交
913
  
914
  ```js
Z
zengyawen 已提交
915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936
  downloadTask.remove().then((result) => {
      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.');
  });
  ```


### remove

remove(callback: AsyncCallback&lt;boolean&gt;): void

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

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

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

937 938 939
**参数:**

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

943
**示例:**
Z
zengyawen 已提交
944
  
945
  ```js
Z
zengyawen 已提交
946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969
  downloadTask.remove((err, result)=>{
      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.');
      } 
  });
  ```


### query<sup>7+</sup>

query(): Promise&lt;DownloadInfo&gt;

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

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

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

970
**参数:**
Z
zengyawen 已提交
971
    | 类型 | 说明 |
Z
zengyawen 已提交
972
  | -------- | -------- |
Z
zengyawen 已提交
973
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
Z
zengyawen 已提交
974

975
**示例:**
Z
zengyawen 已提交
976
  
977
  ```js
Z
zengyawen 已提交
978
  downloadTask.query().then((downloadInfo) => {    
Z
zengyawen 已提交
979
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
Z
zengyawen 已提交
980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


### query<sup>7+</sup>

query(callback: AsyncCallback&lt;DownloadInfo&gt;): void

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

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

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

996 997 998
**参数:**

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

1002
**示例:**
Z
zengyawen 已提交
1003
  
1004
  ```js
Z
zengyawen 已提交
1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024
  downloadTask.query((err, downloadInfo)=>{
      if(err) {
          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
      } else {
          console.info('download query success. data:'+ JSON.stringify(downloadInfo));
      }
  });
  ```


### queryMimeType<sup>7+</sup>

queryMimeType(): Promise&lt;string&gt;

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

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

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

1025 1026 1027
**返回值:**

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

1031
**示例:**
Z
zengyawen 已提交
1032
  
1033
  ```js
Z
zengyawen 已提交
1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051
  downloadTask.queryMimeType().then((data) => {    
      console.info('Download task queried. Data:' + JSON.stringify(data));
  }).catch((err) => {
      console.error('Failed to query the download MimeType. Cause:' + JSON.stringify(err))
  });
  ```


### queryMimeType<sup>7+</sup>

queryMimeType(callback: AsyncCallback&lt;string&gt;): void;

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

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

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

1052 1053 1054
**参数:**

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

1058
**示例:**
Z
zengyawen 已提交
1059
  
1060
  ```js
Z
zengyawen 已提交
1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072
  downloadTask.queryMimeType((err, data)=>{
      if(err) {
          console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err));
      } else {
          console.info('Download task queried. data:' + JSON.stringify(data));
      }
  });
  ```


### pause<sup>7+</sup>

Z
zengyawen 已提交
1073
pause(): Promise&lt;void&gt;
Z
zengyawen 已提交
1074 1075 1076 1077 1078 1079 1080

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

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

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

1081 1082 1083
**返回值:**

  | 类型 | 说明 |
Z
zengyawen 已提交
1084
  | -------- | -------- |
Z
zengyawen 已提交
1085
  | Promise&lt;void&gt; | 暂停下载任务是否成功。 |
Z
zengyawen 已提交
1086

1087
**示例:**
Z
zengyawen 已提交
1088
  
1089
  ```js
Z
zengyawen 已提交
1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103
  downloadTask.pause().then((result) => {    
      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));
  });
  ```


### pause<sup>7+</sup>

Z
zengyawen 已提交
1104
pause(callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
1105 1106 1107 1108 1109 1110 1111

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

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

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

1112 1113 1114
**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
Z
zengyawen 已提交
1115
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1116
  | callback | AsyncCallback&lt;void&gt; | 是 | 暂停下载任务的回调函数。 |
Z
zengyawen 已提交
1117

1118
**示例:**
Z
zengyawen 已提交
1119
  
1120
  ```js
Z
zengyawen 已提交
1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136
  downloadTask.pause((err, result)=>{
      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));
      }
  });
  ```


### resume<sup>7+</sup>

Z
zengyawen 已提交
1137
resume(): Promise&lt;void&gt;
Z
zengyawen 已提交
1138 1139 1140 1141 1142 1143 1144

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

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

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

1145 1146 1147
**参数:**

  | 类型 | 说明 |
Z
zengyawen 已提交
1148
  | -------- | -------- |
Z
zengyawen 已提交
1149
  | Promise&lt;void&gt; | 重新启动暂停的下载任务是否成功。 |
Z
zengyawen 已提交
1150

1151
**示例:**
Z
zengyawen 已提交
1152
  
1153
  ```js
Z
zengyawen 已提交
1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168
  downloadTask.resume().then((result) => {
      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);
  });
  ```


### resume<sup>7+</sup>

Z
zengyawen 已提交
1169
resume(callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
1170 1171 1172 1173 1174 1175 1176

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

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

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

1177 1178 1179
**参数:**

  | 参数名 | 参数类型 | 必填 | 说明 |
Z
zengyawen 已提交
1180
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1181
  | callback | AsyncCallback&lt;void&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
Z
zengyawen 已提交
1182

1183
**示例:**
Z
zengyawen 已提交
1184
  
1185
  ```js
Z
zengyawen 已提交
1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201
  downloadTask.resume((err, result)=>{
      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.');
      }
  });
  ```


## DownloadConfig

A
anyueling 已提交
1202 1203
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1204 1205 1206 1207 1208
**系统能力**: SystemCapability.MiscServices.Download

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


Z
zengyawen 已提交
1219
## DownloadInfo<sup>7+</sup>
Z
zengyawen 已提交
1220

A
anyueling 已提交
1221 1222
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1223 1224
**系统能力**: SystemCapability.MiscServices.Download

Z
zengyawen 已提交
1225
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1226
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237
| 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)。 |