uniapp plus.downloader的使用方法
如何在uniapp中使用plus.downloader实现文件下载功能?具体调用方法和参数配置是怎样的?下载进度回调、暂停/继续下载、多任务下载等功能该如何实现?遇到下载失败或网络中断的情况应该怎么处理?求完整的使用示例代码和常见问题解决方案。
2 回复
在 UniApp 中,plus.downloader 是用于管理文件下载的 API,适用于 App 端(HBuilderX 打包的移动应用)。以下是基本使用方法及示例代码:
1. 创建下载任务
使用 plus.downloader.createDownload 创建下载任务,配置参数如下:
url:文件下载地址(必需)。filename:保存的文件路径(可选,默认在_downloads/目录)。timeout:超时时间(毫秒,可选)。retry:重试次数(可选)。
示例代码:
// 创建下载任务
const downloadTask = plus.downloader.createDownload(
'https://example.com/file.zip',
{
filename: '_downloads/example.zip' // 指定保存路径
},
(task, status) => {
if (status === 200) {
console.log('下载成功,文件路径:', task.filename);
} else {
console.log('下载失败,状态码:', status);
}
}
);
// 开始下载
downloadTask.start();
2. 监听下载进度
通过 addEventListener 监听进度变化:
downloadTask.addEventListener('statechanged', (task, status) => {
if (task.state === plus.downloader.DOWNLOADING) {
const progress = (task.downloadedSize / task.totalSize) * 100;
console.log(`下载进度:${progress.toFixed(2)}%`);
}
});
3. 暂停与恢复下载
- 暂停:
downloadTask.pause() - 恢复:
downloadTask.resume()
4. 批量下载管理
通过 plus.downloader.enumerate 获取所有任务:
const list = plus.downloader.enumerate();
list.forEach(task => {
console.log('任务ID:', task.id);
});
注意事项:
- 权限配置:在
manifest.json中确保勾选「下载」权限。 - 网络限制:仅支持 App 端,H5 环境不可用。
- 路径权限:保存路径需在应用沙箱内(如
_doc/、_downloads/)。
以上为 plus.downloader 的核心用法,适用于单文件或批量下载场景。


