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 中,将文件流保存到本地文件通常涉及下载文件并存储到设备。以下是实现步骤和示例代码:
实现方法:
- 使用
uni.downloadFile下载文件:获取文件流并保存为临时文件。 - 使用
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 转换。

