uniapp如何下载文件到本地
在uniapp中,如何实现文件下载到本地功能?我试了uni.downloadFile能获取临时路径,但不知道怎么保存到手机存储中,尤其是Android和iOS路径处理有什么区别?需要额外插件吗?保存后如何在系统相册或文件管理器里看到下载的文件?求具体代码示例和权限配置方法。
2 回复
使用uni.downloadFile下载文件,再通过uni.saveFile保存到本地。注意:小程序需用户授权,H5端可能有限制。
在 UniApp 中,下载文件到本地可以通过 uni.downloadFile API 实现。以下是详细步骤和示例代码:
步骤说明:
- 使用
uni.downloadFile下载文件到临时路径。 - 通过
uni.saveFile将临时文件保存到本地永久存储(可选,适用于需要持久化的情况)。 - 使用
uni.openDocument打开文件(如 PDF、图片等,可选)。
示例代码:
// 下载文件
uni.downloadFile({
url: 'https://example.com/yourfile.pdf', // 文件URL
success: (res) => {
if (res.statusCode === 200) {
// 下载成功,res.tempFilePath 为临时文件路径
console.log('下载成功,临时路径:', res.tempFilePath);
// 可选:保存到本地永久存储
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' });
}
});
// 可选:直接打开文件(如PDF)
uni.openDocument({
filePath: res.tempFilePath,
success: () => console.log('打开文档成功'),
fail: (err) => console.error('打开文档失败:', err)
});
}
},
fail: (err) => {
console.error('下载失败:', err);
uni.showToast({ title: '下载失败', icon: 'none' });
}
});
注意事项:
- 临时与永久存储:
downloadFile下载的文件默认存于临时目录,应用关闭后可能被清理。使用saveFile可转为永久存储。 - 文件类型支持:
openDocument支持常见格式(如 PDF、Word、Excel)。部分格式需依赖系统应用。 - 网络权限:确保
manifest.json中配置了网络请求权限。 - 路径处理:H5 端部分浏览器可能限制文件保存,需测试兼容性。
根据需求选择保存或直接打开即可。

