2 回复
在 uni-app
中,你可以使用 uni.downloadFile
和 uni.saveFile
方法来下载音频文件并保存到本地。以下是一个完整的代码示例,展示了如何从服务器下载音频文件并保存到本地文件系统。
示例代码
// 假设你有一个音频文件的URL
const audioUrl = 'https://example.com/audio/sample.mp3';
// 定义一个函数来下载音频文件
function downloadAudioFile(url) {
// 使用uni.downloadFile下载文件
uni.downloadFile({
url: url,
success: (res) => {
if (res.statusCode === 200) {
// 下载成功,获取临时文件路径
const tempFilePath = res.tempFilePath;
// 定义一个保存文件的路径(例如:保存到应用沙盒的documents目录)
const saveFilePath = `${uni.env.USER_DATA_PATH}/sample.mp3`;
// 使用uni.saveFile保存文件
uni.saveFile({
tempFilePath: tempFilePath,
filePath: saveFilePath,
success: () => {
console.log('文件保存成功,路径为:', saveFilePath);
// 可以在这里执行后续操作,比如播放文件
// uni.createInnerAudioContext().src = saveFilePath;
},
fail: (err) => {
console.error('文件保存失败:', err);
}
});
} else {
console.error('文件下载失败,状态码:', res.statusCode);
}
},
fail: (err) => {
console.error('文件下载失败:', err);
}
});
}
// 调用下载函数
downloadAudioFile(audioUrl);
注意事项
- 权限:确保你的应用在
manifest.json
中已经配置了必要的文件系统权限。 - 路径:
uni.env.USER_DATA_PATH
是应用沙盒中的一个目录,你可以根据需要调整保存路径。 - 文件大小:对于较大的文件,下载和保存可能会需要一些时间,考虑添加进度提示或错误处理。
- 兼容性:
uni-app
跨平台特性意味着你需要测试代码在不同平台(如微信小程序、H5、App等)上的表现。
这个示例代码展示了基本的下载和保存流程,你可以根据实际需求进行扩展,比如添加下载进度条、错误重试机制等。