uniapp如何下载文件到手机
在uniapp中如何实现文件下载并保存到手机本地?我尝试了uni.downloadFile接口,但下载后的文件不知道存到哪里去了,也无法在手机文件管理中找到。请问应该如何正确指定存储路径,并确保下载的文件能被手机系统识别和访问?不同手机系统的存储权限该如何处理?
2 回复
使用uniapp下载文件到手机,可通过uni.downloadFile和uni.saveFile实现。先下载文件到临时路径,再保存到本地。注意需在manifest.json中配置权限。
在 UniApp 中下载文件到手机,可以使用 uni.downloadFile API 实现。以下是具体步骤和示例代码:
步骤:
- 使用
uni.downloadFile下载文件到临时路径。 - 通过
uni.saveFile将文件保存到本地(可选,永久存储)。 - 使用
uni.openDocument或uni.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监听进度。
通过以上方法,即可实现文件下载到手机的功能。

