uniapp plus.downloader的使用方法

如何在uniapp中使用plus.downloader实现文件下载功能?具体调用方法和参数配置是怎样的?下载进度回调、暂停/继续下载、多任务下载等功能该如何实现?遇到下载失败或网络中断的情况应该怎么处理?求完整的使用示例代码和常见问题解决方案。

2 回复

uniapp中,使用plus.downloader.createDownload创建下载任务,设置URL和保存路径,通过start方法启动下载。可监听下载进度和状态变化。


在 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);
});

注意事项:

  1. 权限配置:在 manifest.json 中确保勾选「下载」权限。
  2. 网络限制:仅支持 App 端,H5 环境不可用。
  3. 路径权限:保存路径需在应用沙箱内(如 _doc/_downloads/)。

以上为 plus.downloader 的核心用法,适用于单文件或批量下载场景。

回到顶部