uniapp如何下载文件到手机

在uniapp中如何实现文件下载并保存到手机本地?我尝试了uni.downloadFile接口,但下载后的文件不知道存到哪里去了,也无法在手机文件管理中找到。请问应该如何正确指定存储路径,并确保下载的文件能被手机系统识别和访问?不同手机系统的存储权限该如何处理?

2 回复

使用uniapp下载文件到手机,可通过uni.downloadFileuni.saveFile实现。先下载文件到临时路径,再保存到本地。注意需在manifest.json中配置权限。


在 UniApp 中下载文件到手机,可以使用 uni.downloadFile API 实现。以下是具体步骤和示例代码:

步骤:

  1. 使用 uni.downloadFile 下载文件到临时路径。
  2. 通过 uni.saveFile 将文件保存到本地(可选,永久存储)。
  3. 使用 uni.openDocumentuni.saveFileToDownloads(部分平台支持)打开或保存到下载目录。

示例代码:

// 下载文件
uni.downloadFile({
  url: 'https://example.com/file.pdf', // 文件URL
  success: (res) => {
    if (res.statusCode === 200) {
      // 保存到本地
      uni.saveFile({
        tempFilePath: res.tempFilePath,
        success: (saveRes) => {
          uni.showToast({ title: '下载成功', icon: 'success' });
          console.log('文件保存路径:', saveRes.savedFilePath);
          
          // 可选:保存到手机下载目录(仅安卓部分版本支持)
          // uni.saveFileToDownloads({
          //   filePath: saveRes.savedFilePath,
          //   success: () => console.log('保存到下载目录')
          // });
        },
        fail: (err) => {
          uni.showToast({ title: '保存失败', icon: 'none' });
          console.error(err);
        }
      });
    }
  },
  fail: (error) => {
    uni.showToast({ title: '下载失败', icon: 'none' });
    console.error(error);
  }
});

注意事项:

  • 权限配置:在 manifest.json 中配置网络请求权限(如已配置 uni.request 则无需额外设置)。
  • 文件类型:部分文件类型(如.apk)可能受系统限制。
  • 平台差异
    • 安卓保存到下载目录需用 uni.saveFileToDownloads,但支持有限。
    • iOS 文件通常保存到应用沙盒,用户可通过“文件”App 访问。

扩展建议:

  • 下载前检查网络状态(uni.getNetworkType)。
  • 大文件下载可结合 uni.onProgressUpdate 监听进度。

通过以上方法,即可实现文件下载到手机的功能。

回到顶部