uniapp如何下载文件流并保存到本地
在uniapp中如何下载文件流并保存到本地?我尝试使用uni.downloadFile下载文件,但不知道如何将返回的文件流保存为本地文件。希望能提供一个完整的示例代码,包括如何处理下载后的临时路径和保存到本地的具体步骤。
2 回复
使用uni.downloadFile下载文件,返回临时路径。再用uni.saveFile保存到本地,注意仅支持保存图片和视频。
在 UniApp 中下载文件流并保存到本地,可以使用 uni.downloadFile 和 uni.saveFile API。以下是详细步骤和示例代码:
步骤:
- 下载文件:使用
uni.downloadFile获取文件临时路径。 - 保存文件:通过
uni.saveFile将临时文件保存到本地永久存储。
示例代码:
// 下载文件并保存
uni.downloadFile({
url: 'https://example.com/yourfile.pdf', // 文件URL
success: (res) => {
if (res.statusCode === 200) {
// 获取临时文件路径
const tempFilePath = res.tempFilePath;
// 保存到本地
uni.saveFile({
tempFilePath: tempFilePath,
success: (saveRes) => {
const savedFilePath = saveRes.savedFilePath;
uni.showToast({
title: '文件保存成功',
icon: 'success'
});
console.log('文件保存路径:', savedFilePath);
},
fail: (err) => {
uni.showToast({
title: '保存失败',
icon: 'none'
});
console.error('保存失败:', err);
}
});
}
},
fail: (error) => {
uni.showToast({
title: '下载失败',
icon: 'none'
});
console.error('下载失败:', error);
}
});
注意事项:
- 权限配置:在
manifest.json中确保已配置网络请求权限(如https域名)。 - 文件类型:支持常见格式(如 PDF、图片、文本等),但部分格式可能受平台限制。
- 临时与永久路径:下载后文件为临时路径,需通过
saveFile转为永久存储(仅小程序端有效,H5 端需使用浏览器下载逻辑)。 - H5 端适配:H5 中
uni.saveFile不可用,需用uni.downloadFile直接触发浏览器下载。
扩展场景:
若需保存到相册(如图片),可使用 uni.saveImageToPhotosAlbum。
以上方法适用于多数文件下载需求,根据实际平台调整逻辑即可。

