uni.downloadFile(options)
下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。
downloadFile 兼容性
Web | Android | Android uni-app x UTS 插件 | iOS | iOS uni-app x UTS 插件 |
4.0 | 3.91 | 3.91 | 4.11 | 4.11 |
下载文件常见场景是apk的下载更新,app升级中心是一个现成的开源项目,实现下载进度在通知栏显示等复杂交互,可直接使用。
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
options | DownloadFileOptions | 是 | - | - | - |
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 | url | string | 是 | - |
Web
|
Android
|
Android uni-app x UTS 插件
|
iOS
|
iOS uni-app x UTS 插件
| 4.0 | 3.91 | 3.91 | 4.11 | 4.11 |
| 下载资源的 url | header | UTSJSONObject | 否 | null |
Web
|
Android
|
Android uni-app x UTS 插件
|
iOS
|
iOS uni-app x UTS 插件
| - | 3.91 | 3.91 | 4.11 | 4.11 |
| HTTP 请求 Header,header 中不能设置 Referer | filePath | string | 否 | null |
Web
|
Android
|
Android uni-app x UTS 插件
|
iOS
|
iOS uni-app x UTS 插件
| 4.0 | 3.91 | 3.91 | 4.11 | 4.11 |
| 指定文件下载路径 支持相对路径与绝对路径,例:
/imgs/pic.png 、/storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/temp/imgs/pic.png 并且支持指定下载目录,例:
/imgs/ 支持uni.env的平台兼容性:Android自3.9开始支持uni.env,iOS自4.13开始支持uni.env | timeout | number | 否 | 120000 |
Web
|
Android
|
Android uni-app x UTS 插件
|
iOS
|
iOS uni-app x UTS 插件
| 4.0 | 3.91 | 3.91 | 4.11 | 4.11 |
| 超时时间,单位 ms | success | (result: DownloadFileSuccess) => void | 否 | null | - | 下载成功后以 tempFilePath 的形式传给页面,res = {tempFilePath: '文件的临时路径'} | fail | (result: DownloadFileFail) => void | 否 | null | - | 失败的回调函数 | complete | (result: any) => void | 否 | null | - | 结束的回调函数(调用成功、失败都会执行) |
|
DownloadFileSuccess 的属性值
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 |
tempFilePath | string | 是 | - |
Web
|
Android
|
Android uni-app x UTS 插件
|
iOS
|
iOS uni-app x UTS 插件
| 4.0 | 3.91 | 3.91 | 4.11 | 4.11 |
| 临时文件路径,下载后的文件会存储到一个临时文件 |
statusCode | number | 是 | - |
Web
|
Android
|
Android uni-app x UTS 插件
|
iOS
|
iOS uni-app x UTS 插件
| 4.0 | 3.91 | 3.91 | 4.11 | 4.11 |
| 开发者服务器返回的 HTTP 状态码 |
DownloadFileFail 的属性值
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 |
errCode | number | 是 | - | - | 错误码 |
合法值 | 兼容性 | 描述 | 5 | - | 接口超时 | 1000 | - | 服务端系统错误 | 100001 | - | json数据解析错误 | 100002 | - | 错误信息json解析失败 | 600003 | - | 网络中断 | 600008 | - | data参数类型不合法 | 600009 | - | URL格式不合法 | 602001 | - | request系统错误 |
|
errSubject | string | 是 | - | - | 统一错误主题(模块)名称 |
data | any | 否 | - | - | 错误信息中包含的数据 |
cause | Error | 否 | - | - | 源错误信息,可以包含多个错误,详见SourceError |
errMsg | string | 是 | - | - | - |
注意事项
- 当目录下有同名文件时,文件名会增加数字后缀,例如:目录下abc.txt已经存在,此时下载此文件名的文件到此目录时,下载后的文件会命名为abc(1).txt。
- App-Android下载的默认目录为外置应用沙盒目录下的cache目录。如果手机磁盘空间不足,系统清理工具会清理cache目录。
- 如需主动删除下载文件,使用uni.getFileSystemManager。
- 默认下载路径为外置应用沙盒目录
uni.env.CACHE_PATH/cache/uni-download
。但在HBuilderX 3.99前有过几次变更,3.98的目录是uni.env.CACHE_PATH/cache/uniDownloads
,而3.98之前则不在cache目录下。
返回值
DownloadTask 的方法
abort(): void,
中断下载任务
abort 兼容性
Web | Android | Android uni-app x UTS 插件 | iOS | iOS uni-app x UTS 插件 |
4.0 | 3.91 | 3.91 | 4.11 | 4.11 |
onProgressUpdate(callback: DownloadFileProgressUpdateCallback): void,
监听下载进度变化。
onProgressUpdate 兼容性
Web | Android | Android uni-app x UTS 插件 | iOS | iOS uni-app x UTS 插件 |
4.0 | 3.91 | 3.91 | 4.11 | 4.11 |
参数
OnProgressDownloadResult 的属性值
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 |
progress | number | 是 | - |
Web
|
Android
|
Android uni-app x UTS 插件
|
iOS
|
iOS uni-app x UTS 插件
| 4.0 | 3.91 | 3.91 | 4.11 | 4.11 |
| 下载进度百分比 |
totalBytesWritten | number | 是 | - |
Web
|
Android
|
Android uni-app x UTS 插件
|
iOS
|
iOS uni-app x UTS 插件
| 4.0 | 3.91 | 3.91 | 4.11 | 4.11 |
| 已经下载的数据长度,单位 Bytes |
totalBytesExpectedToWrite | number | 是 | - |
Web
|
Android
|
Android uni-app x UTS 插件
|
iOS
|
iOS uni-app x UTS 插件
| 4.0 | 3.91 | 3.91 | 4.11 | 4.11 |
| 预期需要下载的数据总长度,单位 Bytes |
注意事项
- 在4.25版本iOS平台增加了Task原生对象自动销毁的逻辑,即下载完成后自动释放原生的Task对象,建议开发者在
complete
回调中置空Task对象,例
如不释放,在调用Task对象的方法将导致控制台报错:
error: instance object does not exist: id:15
示例
hello uni-app x
参见
通用类型
GeneralCallbackResult
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 |
errMsg | string | 是 | - | - | 错误信息 |
tips
- 下载后的文件,如需分享或使用三方应用打开,在Android7上需要使用FileProvider。详见 分享、使用三方应用打开
- web端并不会将文件下载到文件系统内,而是保存在js的File对象内,以供其他接口(如canvas、uploadFile)使用