uniapp 如何将文件流保存到本地文件

在uniapp中如何将接收到的文件流保存为本地文件?比如从接口获取的文件流数据,需要下载到用户设备本地存储。希望能提供具体代码示例,包括权限申请和保存路径设置等完整实现步骤。

2 回复

使用uni.downloadFile下载文件,然后通过uni.saveFile保存到本地。示例代码:

uni.downloadFile({
  url: '文件URL',
  success: (res) => {
    uni.saveFile({
      tempFilePath: res.tempFilePath,
      success: (res) => {
        console.log('保存成功', res.savedFilePath)
      }
    })
  }
})

在 UniApp 中,将文件流保存到本地文件通常涉及下载文件并存储到设备。以下是实现步骤和示例代码:

实现方法:

  1. 使用 uni.downloadFile 下载文件:获取文件流并保存为临时文件。
  2. 使用 uni.saveFile 保存到本地:将临时文件移动到用户持久存储目录。

示例代码:

// 下载文件
uni.downloadFile({
  url: 'https://example.com/yourfile.pdf', // 文件流的URL
  success: (res) => {
    if (res.statusCode === 200) {
      // 保存文件到本地
      uni.saveFile({
        tempFilePath: res.tempFilePath, // 临时文件路径
        success: (saveRes) => {
          console.log('文件保存成功:', saveRes.savedFilePath);
          uni.showToast({ title: '保存成功', icon: 'success' });
        },
        fail: (err) => {
          console.error('保存失败:', err);
          uni.showToast({ title: '保存失败', icon: 'none' });
        }
      });
    }
  },
  fail: (error) => {
    console.error('下载失败:', error);
    uni.showToast({ title: '下载失败', icon: 'none' });
  }
});

注意事项:

  • 权限配置:在 manifest.json 中确保已声明文件存储权限(如 Android 的 WRITE_EXTERNAL_STORAGE)。
  • 平台差异:iOS 可能限制文件保存位置,确保路径可访问。
  • 临时文件downloadFile 生成的临时文件可能被系统清理,需及时保存。

扩展场景:

  • 如果文件流来自其他来源(如蓝牙、API 响应),可先通过 uni.writeFile 写入临时路径,再调用 saveFile

此方法适用于常见文件类型(如图片、PDF)。如有特定需求(如二进制流处理),需结合 ArrayBuffer 转换。

回到顶部