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

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

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


## 导入模块


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


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

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

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

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

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

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

## 常量

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

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

A
anyueling 已提交
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
### 网络类型
下载支持自定义网络类型,可以在[DownloadConfig](#downloadconfig)中通过networkType配置成以下网络类型。

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

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

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


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

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

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

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


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

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

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

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

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

106 107 108
**参数:**

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

A
anyueling 已提交
113

114 115 116
**返回值:**

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

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

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

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

129
  ```js
130
  let uploadTask;
A
anyueling 已提交
131
  let uploadConfig = {
A
anyueling 已提交
132
    url: 'http://patch',
A
anyueling 已提交
133 134 135 136 137
    header: { key1: "value1", key2: "value2" },
    method: "POST",
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
  };
A
anyueling 已提交
138 139
  try {
    request.uploadFile(globalThis.abilityContext, uploadConfig).then((data) => {
Z
zengyawen 已提交
140
      uploadTask = data;
A
anyueling 已提交
141 142 143 144 145 146
    }).catch((err) => {
        console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
    });
  } catch (err) {
    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
  }
Z
zengyawen 已提交
147 148 149
  ```


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

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

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

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

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

160 161
**参数:**

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

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

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

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

177
  ```js
178
  let uploadTask;
A
anyueling 已提交
179
  let uploadConfig = {
A
anyueling 已提交
180
    url: 'http://patch',
A
anyueling 已提交
181 182 183 184 185
    header: { key1: "value1", key2: "value2" },
    method: "POST",
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
  };
A
anyueling 已提交
186 187
  try {
    request.uploadFile(globalThis.abilityContext, uploadConfig, (err, data) => {
Z
zengyawen 已提交
188 189 190 191 192
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
A
anyueling 已提交
193 194 195 196
    });
  } catch (err) {
    console.error('err.code : ' + err.code + ', err.message : ' + err.message);
  }
Z
zengyawen 已提交
197
  ```
A
anyueling 已提交
198

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

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

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

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

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

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

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

**参数:**

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

**返回值:**

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

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

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


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

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

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

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

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

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

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

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

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

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

A
anyueling 已提交
267 268 269
  ```js
  let uploadTask;
  let uploadConfig = {
A
anyueling 已提交
270
    url: 'http://patch',
A
anyueling 已提交
271 272 273 274 275
    header: { key1: "value1", key2: "value2" },
    method: "POST",
    files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }],
    data: [{ name: "name123", value: "123" }],
  };
A
anyueling 已提交
276
  request.upload(uploadConfig, (err, data) => {
A
anyueling 已提交
277 278 279 280 281 282 283
      if (err) {
          console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
          return;
      }
      uploadTask = data;
  });
  ```
Z
zengyawen 已提交
284 285 286

## UploadTask

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

Z
zengyawen 已提交
289 290 291 292


### on('progress')

Z
zengyawen 已提交
293
on(type: 'progress', callback:(uploadedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
294 295 296 297 298 299 300

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

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

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

301 302 303
**参数:**

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

308
  回调函数的参数
Z
zengyawen 已提交
309

310 311
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
312 313
| uploadedSize | number | 是 | 当前已上传文件大小,单位为B。 |
| totalSize | number | 是 | 上传文件的总大小,单位为B。 |
Z
zengyawen 已提交
314

315
**示例:**
A
anyueling 已提交
316

317
  ```js
Z
zengyawen 已提交
318
  uploadTask.on('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
319 320
      console.info("upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize);
  }
Z
zengyawen 已提交
321
  );
Z
zengyawen 已提交
322 323 324 325 326
  ```


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

Z
zengyawen 已提交
327
on(type: 'headerReceive', callback:  (header: object) =&gt; void): void
Z
zengyawen 已提交
328 329 330 331 332 333 334

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

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

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

335 336 337
**参数:**

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

  回调函数的参数:

344 345 346
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
347

348
**示例:**
A
anyueling 已提交
349

350
  ```js
Z
zengyawen 已提交
351
  uploadTask.on('headerReceive', function callback(headers){   
Z
zengyawen 已提交
352 353
      console.info("upOnHeader headers:" + JSON.stringify(headers));
  }
Z
zengyawen 已提交
354
  );
Z
zengyawen 已提交
355 356 357
  ```


A
修改  
anyueling 已提交
358
### on('complete' | 'fail')<sup>9+</sup>
A
anyueling 已提交
359 360 361 362 363 364 365 366 367 368 369 370 371 372

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

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

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

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

**参数:**

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

  回调函数的参数

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

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

A
anyueling 已提交
383
  ```js
A
修改  
anyueling 已提交
384 385 386
  uploadTask.on('complete', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnComplete taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
387 388 389 390
    }
  }
  );

A
修改  
anyueling 已提交
391 392 393
  uploadTask.on('fail', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnFail taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
394 395 396 397 398 399
    }
  }
  );
  ```


Z
zengyawen 已提交
400 401
### off('progress')

Z
zengyawen 已提交
402
off(type:  'progress',  callback?: (uploadedSize: number, totalSize: number) =&gt;  void): void
Z
zengyawen 已提交
403 404 405 406 407 408 409

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

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

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

410 411
**参数:**

412
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
413
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
414 415
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(上传的进度信息)。 |
  | callback | function | 否 | 上传任务的回调函数。 |
Z
zengyawen 已提交
416 417 418

  回调函数的参数:

419 420
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
A
anyueling 已提交
421 422
| uploadedSize | number | 是 | 当前已上传文件的大小,单位为B。 |
| totalSize | number | 是 | 上传文件的总大小,单位为B。 |
Z
zengyawen 已提交
423

424
**示例:**
A
anyueling 已提交
425

426
  ```js
Z
zengyawen 已提交
427
  uploadTask.off('progress', function callback(uploadedSize, totalSize) {
Z
zengyawen 已提交
428 429
      console.info('uploadedSize: ' + uploadedSize, 'totalSize: ' + totalSize);
  }
Z
zengyawen 已提交
430
  );
Z
zengyawen 已提交
431 432 433 434 435
  ```


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

Z
zengyawen 已提交
436
off(type: 'headerReceive', callback?: (header: object) =&gt; void): void
Z
zengyawen 已提交
437 438 439 440 441 442 443

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

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

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

444 445
**参数:**

446
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
447
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
448
  | type | string | 是 | 取消订阅的事件类型,取值为'headerReceive'(接收响应头)。 |
Z
zengyawen 已提交
449
  | callback | function | 否 | HTTP&nbsp;Response&nbsp;Header事件的回调函数。 |
Z
zengyawen 已提交
450 451 452

  回调函数的参数:

453 454 455
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| header | object | 是 | HTTP&nbsp;Response&nbsp;Header。 |
Z
zengyawen 已提交
456

457
**示例:**
A
anyueling 已提交
458

459
  ```js
Z
zengyawen 已提交
460
  uploadTask.off('headerReceive', function callback(headers) {
Z
zengyawen 已提交
461 462
      console.info("upOnHeader headers:" + JSON.stringify(headers));
  }
Z
zengyawen 已提交
463
  );
Z
zengyawen 已提交
464 465
  ```

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

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

A
修改  
anyueling 已提交
470
关闭上传任务监听,异步方法,使用callback形式返回结果。
A
anyueling 已提交
471 472 473 474 475 476 477 478 479 480

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

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

**参数:**

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

  回调函数的参数

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

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

A
anyueling 已提交
491
  ```js
A
修改  
anyueling 已提交
492 493 494
  uploadTask.off('complete', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnComplete taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
495 496 497
    }
  }
  );
A
anyueling 已提交
498

A
修改  
anyueling 已提交
499 500 501
  uploadTask.off('fail', function callback(taskStates) {
    for (let i = 0; i < taskStates.length; i++ ) {
      console.info("upOnFail taskState:" + JSON.stringify(taskStates[i]));
A
anyueling 已提交
502 503 504
    }
  }
  );
A
anyueling 已提交
505 506
  ```

A
anyueling 已提交
507 508
### delete<sup>9+</sup>
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
509 510 511 512 513 514 515

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

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

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

516 517 518
**返回值:**

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

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

524
  ```js
A
anyueling 已提交
525
  uploadTask.delete().then((result) => {
Z
zengyawen 已提交
526 527 528 529 530 531 532 533 534 535 536
      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 已提交
537
### delete<sup>9+</sup>
Z
zengyawen 已提交
538

A
anyueling 已提交
539
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
540 541 542 543 544 545 546

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

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

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

547 548
**参数:**

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

553
**示例:**
A
anyueling 已提交
554

555
  ```js
A
anyueling 已提交
556
  uploadTask.delete((err, result) => {
Z
zengyawen 已提交
557 558 559 560 561 562 563 564 565 566 567 568 569
      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 已提交
570
### remove<sup>(deprecated)</sup>
571

A
anyueling 已提交
572
remove(): Promise&lt;boolean&gt;
573 574 575

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

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

578 579 580 581 582 583
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

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

**示例:**

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


A
anyueling 已提交
603
### remove<sup>(deprecated)</sup>
604

A
anyueling 已提交
605
remove(callback: AsyncCallback&lt;boolean&gt;): void
606 607 608

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

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

611 612 613 614 615 616
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
617
  | 参数名 | 类型 | 必填 | 说明 |
618
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
619
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务的回调函数。 |
620 621 622 623

**示例:**

  ```js
A
anyueling 已提交
624
  uploadTask.remove((err, result) => {
625 626 627 628 629 630 631 632 633 634 635 636
      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 已提交
637 638
## UploadConfig

A
anyueling 已提交
639 640
**需要权限**:ohos.permission.INTERNET

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

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

A
修改  
anyueling 已提交
651
## TaskState<sup>9+</sup>
A
anyueling 已提交
652 653 654 655 656 657 658 659 660 661

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

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

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

## File

A
anyueling 已提交
665 666
**需要权限**:ohos.permission.INTERNET

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

Z
zengyawen 已提交
669
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
670
| -------- | -------- | -------- | -------- |
671 672
| filename | string | 是 | multipart提交时,请求头中的文件名。 |
| name | string | 是 | multipart提交时,表单项目的名称,缺省为file。 |
A
anyueling 已提交
673
| uri | string | 是 | 文件的本地存储路径。<br/>仅支持“internal”协议类型,“internal://cache/”为必填字段,示例:<br/>internal://cache/path/to/file.txt |
674
| type | string | 是 | 文件的内容类型,默认根据文件名或路径的后缀获取。 |
Z
zengyawen 已提交
675 676 677 678


## RequestData

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

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

Z
zengyawen 已提交
683
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
684
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
685 686
| name | string | 是 | 表示表单元素的名称。 |
| value | string | 是 | 表示表单元素的值。 |
Z
zengyawen 已提交
687

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

A
anyueling 已提交
690
downloadFile(context: BaseContext, config: DownloadConfig): Promise&lt;DownloadTask&gt;
Z
zengyawen 已提交
691 692 693 694 695 696 697

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

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

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

698 699 700
**参数:**

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

705 706 707
**返回值:**

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

A
anyueling 已提交
711 712 713 714 715 716 717 718 719
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

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

720
**示例:**
A
anyueling 已提交
721

722
  ```js
723
  let downloadTask;
A
anyueling 已提交
724 725 726 727 728 729 730 731 732
  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 已提交
733 734 735
  ```


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

A
anyueling 已提交
738
downloadFile(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void;
Z
zengyawen 已提交
739 740 741 742 743 744 745

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

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

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

746 747
**参数:**

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

A
anyueling 已提交
754 755 756 757 758 759 760 761 762
**错误码:**
以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcode-request.md)

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

763
**示例:**
A
anyueling 已提交
764

765
  ```js
766
  let downloadTask;
A
anyueling 已提交
767 768 769 770 771 772 773 774 775 776 777 778
  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 已提交
779 780
  ```

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

A
anyueling 已提交
783
download(config: DownloadConfig): Promise&lt;DownloadTask&gt;
A
anyueling 已提交
784 785 786

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

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

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

A
anyueling 已提交
791 792 793 794 795 796 797 798 799 800 801 802 803 804 805
**需要权限**:ohos.permission.INTERNET

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

**参数:**

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

**返回值:**

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

A
anyueling 已提交
807
**示例:**
A
anyueling 已提交
808

A
anyueling 已提交
809 810
  ```js
  let downloadTask;
A
anyueling 已提交
811
  request.download({ url: 'https://xxxx/xxxx.hap' }).then((data) => {
A
anyueling 已提交
812 813 814 815 816 817 818
      downloadTask = data;
  }).catch((err) => {
      console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
  })
  ```


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

A
anyueling 已提交
821
download(config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void
A
anyueling 已提交
822 823 824

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

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

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

A
anyueling 已提交
829 830 831 832 833 834
**需要权限**:ohos.permission.INTERNET

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

**参数:**

835
  | 参数名 | 类型 | 必填 | 说明 |
A
anyueling 已提交
836 837
  | -------- | -------- | -------- | -------- |
  | config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 |
838
  | callback | AsyncCallback&lt;[DownloadTask](#downloadtask)&gt; | 是 | 下载接口的回调函数。 |
A
anyueling 已提交
839 840

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

A
anyueling 已提交
842 843
  ```js
  let downloadTask;
A
anyueling 已提交
844
  request.download({ url: 'https://xxxx/xxxxx.hap', 
A
anyueling 已提交
845 846 847 848 849 850 851 852
  filePath: 'xxx/xxxxx.hap'}, (err, data) => {
      if (err) {
          console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
          return;
      }
      downloadTask = data;
  });
  ```
853

Z
zengyawen 已提交
854 855
## DownloadTask

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


### on('progress')

Z
zengyawen 已提交
861
on(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
862 863 864 865 866 867 868

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

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

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

869 870 871
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
872
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
873 874
  | type | string | 是 | 订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 是 | 下载的回调函数。 |
Z
zengyawen 已提交
875 876 877

  回调函数的参数:

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

883
**示例:**
A
anyueling 已提交
884

885
  ```js
886
  downloadTask.on('progress', function download_callback(receivedSize, totalSize) {
Z
zengyawen 已提交
887 888
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
889
  );
Z
zengyawen 已提交
890 891 892 893 894
  ```


### off('progress')

Z
zengyawen 已提交
895
off(type: 'progress', callback?: (receivedSize: number, totalSize: number) =&gt; void): void
Z
zengyawen 已提交
896 897 898 899 900 901 902

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

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

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

903 904
**参数:**

905
  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
906
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
907 908
  | type | string | 是 | 取消订阅的事件类型,取值为'progress'(下载的进度信息)。 |
  | callback | function | 否 | 下载任务的回调函数。 |
Z
zengyawen 已提交
909 910 911

  回调函数的参数:

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

917
**示例:**
A
anyueling 已提交
918

919
  ```js
920 921 922
  downloadTask .off('progress', function download_callback(receivedSize, totalSize) {
      console.info("download receivedSize:" + receivedSize + " totalSize:" + totalSize);
  }
Z
zengyawen 已提交
923
  );
Z
zengyawen 已提交
924 925 926
  ```


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

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

Z
zengyawen 已提交
931
开启下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
932 933 934 935 936

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

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

937 938 939
**参数:**

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

944
**示例:**
A
anyueling 已提交
945

946
  ```js
947 948 949
  downloadTask.on('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
950
  );
Z
zengyawen 已提交
951 952 953
  ```


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

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

Z
zengyawen 已提交
958
取消下载任务相关的监听,异步方法,使用callback形式返回。
Z
zengyawen 已提交
959 960 961 962 963

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

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

964 965 966
**参数:**

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

971
**示例:**
A
anyueling 已提交
972

973
  ```js
974 975 976
  downloadTask.off('complete', function callback() {
      console.info('Download task completed.');
  }
Z
zengyawen 已提交
977
  );
Z
zengyawen 已提交
978 979 980 981 982
  ```


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

Z
zengyawen 已提交
983
on(type: 'fail', callback: (err: number) =&gt; void): void
Z
zengyawen 已提交
984 985 986 987 988 989 990

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

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

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

991 992 993
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
994
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
995 996
  | type | string | 是 | 订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 是 | 下载失败的回调函数。 |
Z
zengyawen 已提交
997 998 999

  回调函数的参数:

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

1004
**示例:**
A
anyueling 已提交
1005

1006
  ```js 
1007 1008 1009
  downloadTask.on('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  }
Z
zengyawen 已提交
1010
  );
Z
zengyawen 已提交
1011 1012 1013 1014 1015
  ```


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

Z
zengyawen 已提交
1016
off(type: 'fail', callback?: (err: number) =&gt; void): void
Z
zengyawen 已提交
1017 1018 1019 1020 1021 1022 1023

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

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

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

1024 1025 1026
**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1027
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1028 1029
  | type | string | 是 | 取消订阅的事件类型,取值为'fail'(下载失败)。 |
  | callback | function | 否 | 取消下载失败的回调函数。 |
Z
zengyawen 已提交
1030 1031 1032

  回调函数的参数

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

1037
**示例:**
A
anyueling 已提交
1038

1039
  ```js
1040 1041 1042
  downloadTask.off('fail', function callBack(err) {
      console.info('Download task failed. Cause:' + err);
  } 
Z
zengyawen 已提交
1043
  );
Z
zengyawen 已提交
1044 1045
  ```

A
anyueling 已提交
1046
### delete<sup>9+</sup>
Z
zengyawen 已提交
1047

A
anyueling 已提交
1048
delete(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1049 1050 1051 1052 1053 1054 1055

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

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

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

1056 1057 1058
**返回值:**

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

1062
**示例:**
A
anyueling 已提交
1063

1064
  ```js
A
anyueling 已提交
1065
  downloadTask.delete().then((result) => {
Z
zengyawen 已提交
1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076
      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 已提交
1077
### delete<sup>9+</sup>
Z
zengyawen 已提交
1078

A
anyueling 已提交
1079
delete(callback: AsyncCallback&lt;boolean&gt;): void
Z
zengyawen 已提交
1080 1081 1082 1083 1084 1085 1086

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

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

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

1087 1088
**参数:**

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

1093
**示例:**
A
anyueling 已提交
1094

1095
  ```js
A
anyueling 已提交
1096
  downloadTask.delete((err, result)=>{
Z
zengyawen 已提交
1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109
      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 已提交
1110
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1111

A
anyueling 已提交
1112
getTaskInfo(): Promise&lt;DownloadInfo&gt;
Z
zengyawen 已提交
1113 1114 1115 1116 1117 1118 1119

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

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

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

1120 1121 1122
**返回值:**

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

1126
**示例:**
A
anyueling 已提交
1127

1128
  ```js
A
anyueling 已提交
1129
  downloadTask.getTaskInfo().then((downloadInfo) => {    
Z
zengyawen 已提交
1130
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
Z
zengyawen 已提交
1131 1132 1133 1134 1135 1136
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


A
anyueling 已提交
1137
### getTaskInfo<sup>9+</sup>
Z
zengyawen 已提交
1138

A
anyueling 已提交
1139
getTaskInfo(callback: AsyncCallback&lt;DownloadInfo&gt;): void
Z
zengyawen 已提交
1140 1141 1142 1143 1144 1145 1146

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

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

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

1147 1148
**参数:**

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

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

1155
  ```js
A
anyueling 已提交
1156
  downloadTask.getTaskInfo((err, downloadInfo)=>{
Z
zengyawen 已提交
1157 1158 1159 1160 1161 1162 1163 1164 1165
      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 已提交
1166
### getTaskMimeType<sup>9+</sup>
Z
zengyawen 已提交
1167

A
anyueling 已提交
1168
getTaskMimeType(): Promise&lt;string&gt;
Z
zengyawen 已提交
1169 1170 1171 1172 1173 1174 1175

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

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

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

1176 1177 1178
**返回值:**

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

1182
**示例:**
A
anyueling 已提交
1183

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

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

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

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

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

1203 1204
**参数:**

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

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

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

A
anyueling 已提交
1224
suspend(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1225 1226 1227 1228 1229 1230 1231

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

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

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

1232 1233 1234
**返回值:**

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

1238
**示例:**
A
anyueling 已提交
1239

1240
  ```js
A
anyueling 已提交
1241
  downloadTask.suspend().then((result) => {    
Z
zengyawen 已提交
1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252
      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 已提交
1253
### suspend<sup>9+</sup>
Z
zengyawen 已提交
1254

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

Z
zengyawen 已提交
1257 1258 1259 1260 1261 1262
暂停下载任务,异步方法,使用callback形式返回结果。

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

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

1263 1264
**参数:**

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

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

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

A
anyueling 已提交
1288
restore(): Promise&lt;boolean&gt;
Z
zengyawen 已提交
1289 1290 1291 1292 1293 1294 1295

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

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

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

1296
**返回值:**
1297 1298

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

1302
**示例:**
A
anyueling 已提交
1303

1304
  ```js
A
anyueling 已提交
1305
  downloadTask.restore().then((result) => {
Z
zengyawen 已提交
1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317
      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 已提交
1318
### restore<sup>9+</sup>
Z
zengyawen 已提交
1319

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

Z
zengyawen 已提交
1322 1323 1324 1325 1326 1327
重新启动暂停的下载任务,异步方法,使用callback形式返回结果。

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

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

1328 1329
**参数:**

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

1334
**示例:**
A
anyueling 已提交
1335

1336
  ```js
A
anyueling 已提交
1337
  downloadTask.restore((err, result)=>{
Z
zengyawen 已提交
1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350
      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.');
      }
  });
  ```


1351

A
anyueling 已提交
1352 1353 1354
### remove<sup>(deprecated)</sup>

remove(): Promise&lt;boolean&gt;
1355 1356 1357

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

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

1360 1361 1362 1363 1364 1365
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1366
  | 类型 | 说明 |
1367
  | -------- | -------- |
A
anyueling 已提交
1368
  | Promise&lt;boolean&gt; | 移除任务是否成功。 |
1369 1370 1371 1372

**示例:**

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

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

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

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

1393 1394 1395 1396 1397 1398
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1399
  | 参数名 | 类型 | 必填 | 说明 |
1400
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1401
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 移除任务是否成功。 |
1402 1403 1404 1405

**示例:**

  ```js
A
anyueling 已提交
1406
  downloadTask.remove((err, result)=>{
1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419
      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 已提交
1420
### query<sup>(deprecated)</sup>
1421

A
anyueling 已提交
1422
query(): Promise&lt;DownloadInfo&gt;
1423 1424 1425

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

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

1428 1429 1430 1431
**需要权限**:ohos.permission.INTERNET

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

1432 1433
**返回值:**

A
anyueling 已提交
1434 1435 1436
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;[DownloadInfo](#downloadinfo7)&gt; | 查询下载任务信息。 |
1437 1438 1439 1440

**示例:**

  ```js
A
anyueling 已提交
1441
  downloadTask.query().then((downloadInfo) => {    
1442 1443 1444 1445 1446 1447 1448
      console.info('Download task queried. Data:' + JSON.stringify(downloadInfo))
  }) .catch((err) => {
      console.error('Failed to query the download task. Cause:' + err)
  });
  ```


A
anyueling 已提交
1449
### query<sup>(deprecated)</sup>
1450

A
anyueling 已提交
1451
query(callback: AsyncCallback&lt;DownloadInfo&gt;): void
1452 1453 1454

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

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

1457 1458 1459 1460 1461 1462
**需要权限**:ohos.permission.INTERNET

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

**参数:**

A
anyueling 已提交
1463
  | 参数名 | 类型 | 必填 | 说明 |
1464
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1465
  | callback | AsyncCallback&lt;[DownloadInfo](#downloadinfo7)&gt; | 是 | 查询下载任务的回调函数。 |
1466 1467 1468 1469

**示例:**

  ```js
A
anyueling 已提交
1470
  downloadTask.query((err, downloadInfo)=>{
1471 1472 1473 1474 1475 1476 1477 1478 1479
      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 已提交
1480
### queryMimeType<sup>(deprecated)</sup>
1481

A
anyueling 已提交
1482
queryMimeType(): Promise&lt;string&gt;
1483 1484 1485

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

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

1488 1489 1490 1491 1492 1493
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1494
  | 类型 | 说明 |
1495
  | -------- | -------- |
A
anyueling 已提交
1496
  | Promise&lt;string&gt; | 查询下载任务的MimeType。 |
1497 1498 1499 1500

**示例:**

  ```js
A
anyueling 已提交
1501
  downloadTask.queryMimeType().then((data) => {    
1502 1503 1504 1505 1506 1507 1508
      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 已提交
1509
### queryMimeType<sup>(deprecated)</sup>
1510

A
anyueling 已提交
1511
queryMimeType(callback: AsyncCallback&lt;string&gt;): void;
1512 1513 1514

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

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

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

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

**参数:**

A
anyueling 已提交
1523
  | 参数名 | 类型 | 必填 | 说明 |
1524
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1525
  | callback | AsyncCallback&lt;string&gt; | 是 | 查询下载任务的MimeType的回调函数。 |
1526 1527 1528 1529

**示例:**

  ```js
A
anyueling 已提交
1530
  downloadTask.queryMimeType((err, data)=>{
1531 1532 1533 1534 1535 1536 1537 1538 1539
      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 已提交
1540
### pause<sup>(deprecated)</sup>
1541

A
anyueling 已提交
1542
pause(): Promise&lt;void&gt;
1543 1544 1545

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

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

1548 1549 1550 1551 1552 1553
**需要权限**:ohos.permission.INTERNET

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

**返回值:**

A
anyueling 已提交
1554
  | 类型 | 说明 |
1555
  | -------- | -------- |
A
anyueling 已提交
1556
  | Promise&lt;void&gt; | 暂停下载任务是否成功。 |
1557 1558 1559 1560

**示例:**

  ```js
A
anyueling 已提交
1561
  downloadTask.pause().then((result) => {    
1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572
      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 已提交
1573
### pause<sup>(deprecated)</sup>
1574

A
anyueling 已提交
1575 1576 1577
pause(callback: AsyncCallback&lt;void&gt;): void

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[suspend<sup>9+</sup>](#suspend9-1)替代。
1578 1579 1580 1581 1582 1583 1584 1585 1586

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

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

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

**参数:**

A
anyueling 已提交
1587
  | 参数名 | 类型 | 必填 | 说明 |
1588
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1589
  | callback | AsyncCallback&lt;void&gt; | 是 | 暂停下载任务的回调函数。 |
1590 1591 1592 1593

**示例:**

  ```js
A
anyueling 已提交
1594
  downloadTask.pause((err, result)=>{
1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607
      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 已提交
1608
### resume<sup>(deprecated)</sup>
1609

A
anyueling 已提交
1610
resume(): Promise&lt;void&gt;
1611 1612 1613

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

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

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

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

1620
**返回值:**
1621

A
anyueling 已提交
1622
  | 类型 | 说明 |
1623
  | -------- | -------- |
A
anyueling 已提交
1624
  | Promise&lt;void&gt; | 重新启动暂停的下载任务是否成功。 |
1625 1626 1627 1628

**示例:**

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

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

>  **说明:** 从API Version 7开始支持,从API Version 9开始不再维护,建议使用[restore<sup>9+</sup>](#restore9-1)替代。
1647 1648 1649 1650 1651 1652 1653 1654 1655

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

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

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

**参数:**

A
anyueling 已提交
1656
  | 参数名 | 类型 | 必填 | 说明 |
1657
  | -------- | -------- | -------- | -------- |
A
anyueling 已提交
1658
  | callback | AsyncCallback&lt;void&gt; | 是 | 重新启动暂停的下载任务的回调函数。 |
1659 1660 1661 1662

**示例:**

  ```js
A
anyueling 已提交
1663
  downloadTask.resume((err, result)=>{
1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676
      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 已提交
1677 1678
## DownloadConfig

A
anyueling 已提交
1679 1680
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1681 1682 1683 1684 1685
**系统能力**: SystemCapability.MiscServices.Download

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


Z
zengyawen 已提交
1696
## DownloadInfo<sup>7+</sup>
Z
zengyawen 已提交
1697

A
anyueling 已提交
1698 1699
**需要权限**:ohos.permission.INTERNET

Z
zengyawen 已提交
1700 1701
**系统能力**: SystemCapability.MiscServices.Download

Z
zengyawen 已提交
1702
| 名称 | 类型 | 必填 | 说明 |
Z
zengyawen 已提交
1703
| -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
1704
| downloadId | number | 是 | 下载的文件ID。 |
A
anyueling 已提交
1705
| failedReason | number | 否 | 下载失败原因,可以是任何[下载任务的错误码](#下载任务的错误码)常量。 |
Z
zengyawen 已提交
1706 1707
| fileName | string | 是 | 下载的文件名。 |
| filePath | string | 是 | 存储文件的URI。 |
A
anyueling 已提交
1708 1709
| pausedReason | number | 否 | 会话暂停的原因,可以是任何[下载任务暂停原因](#下载任务暂停原因)常量。 |
| status | number | 是 | 下载状态码,可以是任何[下载任务状态码](#下载任务状态码)常量。 |
Z
zengyawen 已提交
1710
| targetURI | string | 是 | 下载文件的URI。 |
A
anyueling 已提交
1711
| downloadTitle | string | 是 | 下载任务名称。 |
Z
zengyawen 已提交
1712 1713
| downloadTotalBytes | number | 是 | 下载的文件的总大小(int&nbsp;bytes)。 |
| description | string | 是 | 待下载文件的描述信息。 |
A
anyueling 已提交
1714
| downloadedBytes | number | 是 | 实时下载大小(int&nbsp;&nbsp;bytes)。 |