上传下载
说明: 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
导入模块
import request from '@ohos.request';
限制与约束
默认支持https,如果要支持http,需要在config.json里增加network标签,属性标识 “cleartextTraffic”: true。即:
"deviceConfig": {
"default": {
"network": {
"cleartextTraffic": true
}
...
}
}
常量
需要权限:ohos.permission.INTERNET
系统能力: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download。
名称 | 参数类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
NETWORK_MOBILE | number | 是 | 否 | 使用蜂窝网络时允许下载的位标志。 |
NETWORK_WIFI | number | 是 | 否 | 使用WLAN时允许下载的位标志。 |
ERROR_CANNOT_RESUME7+ | number | 是 | 否 | 某些临时错误导致的恢复下载失败。 |
ERROR_DEVICE_NOT_FOUND7+ | number | 是 | 否 | 找不到SD卡等存储设备。 |
ERROR_FILE_ALREADY_EXISTS7+ | number | 是 | 否 | 要下载的文件已存在,下载会话不能覆盖现有文件。 |
ERROR_FILE_ERROR7+ | number | 是 | 否 | 文件操作失败。 |
ERROR_HTTP_DATA_ERROR7+ | number | 是 | 否 | HTTP传输失败。 |
ERROR_INSUFFICIENT_SPACE7+ | number | 是 | 否 | 存储空间不足。 |
ERROR_TOO_MANY_REDIRECTS7+ | number | 是 | 否 | 网络重定向过多导致的错误。 |
ERROR_UNHANDLED_HTTP_CODE7+ | number | 是 | 否 | 无法识别的HTTP代码。 |
ERROR_UNKNOWN7+ | number | 是 | 否 | 未知错误。 |
PAUSED_QUEUED_FOR_WIFI7+ | number | 是 | 否 | 下载被暂停并等待WLAN连接,因为文件大小超过了使用蜂窝网络的会话允许的最大值。 |
PAUSED_UNKNOWN7+ | number | 是 | 否 | 未知原因导致暂停下载。 |
PAUSED_WAITING_FOR_NETWORK7+ | number | 是 | 否 | 由于网络问题(例如网络断开)而暂停下载。 |
PAUSED_WAITING_TO_RETRY7+ | number | 是 | 否 | 发生网络错误,将重试下载会话。 |
SESSION_FAILED7+ | number | 是 | 否 | 下载会话已失败,将不会重试。 |
SESSION_PAUSED7+ | number | 是 | 否 | 下载会话已暂停。 |
SESSION_PENDING7+ | number | 是 | 否 | 正在调度下载会话。 |
SESSION_RUNNING7+ | number | 是 | 否 | 下载会话正在进行中。 |
SESSION_SUCCESSFUL7+ | number | 是 | 否 | 下载会话已完成。 |
request.upload
upload(config: UploadConfig): Promise
上传,异步方法,使用promise形式返回结果。
需要权限:ohos.permission.INTERNET
系统能力: SystemCapability.MiscServices.Upload
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
config | [UploadConfig] | 是 | 上传的配置信息。 |
返回值:
类型 | 说明 |
---|---|
Promise<[UploadTask]> | 返回上传任务。 |
示例:
let file1 = { filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" };
let data = { name: "name123", value: "123" };
let header = { key1: "value1", key2: "value2" };
let uploadTask;
request.upload({ url: 'https://patch', header: header, method: "POST", files: [file1], data: [data] }).then((data) => {
uploadTask = data;
}).catch((err) => {
console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
})
request.upload
upload(config: UploadConfig, callback: AsyncCallback): void
上传,异步方法,使用callback形式返回结果。
需要权限:ohos.permission.INTERNET
系统能力: SystemCapability.MiscServices.Upload
参数:
参数名 | 参数类型 | 必填 | 说明 |
---|---|---|---|
config | [UploadConfig] | 是 | 上传的配置信息。 |
callback | AsyncCallback<[UploadTask]> | 否 | 回调函数,异步返回UploadTask对象。 |
示例:
let file1 = { filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" };
let data = { name: "name123", value: "123" };
let header = { key1: "value1", key2: "value2" };
let uploadTask;
request.upload({ url: 'https://patch', header: header, method: "POST", files: [file1], data: [data] }, (err, data) => {
if (err) {
console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
return;
}
uploadTask = data;
});
UploadTask
上传任务,使用下列方法前,需要先获取UploadTask对象。
on(‘progress’)
on(type: ‘progress’, callback:(uploadedSize: number, totalSize: number) => void): void
开启上传任务监听,异步方法,使用callback形式返回结果。
需要权限:ohos.permission.INTERNET
系统能力: SystemCapability.MiscServices.Upload
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 订阅的事件类型,取值为’progress’(上传的进度信息)。 |
callback | function | 是 | 上传进度的回调函数。 |
回调函数的参数
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
uploadedSize | number | 是 | 当前已上传文件大小,单位为KB。 |
totalSize | number | 是 |