在App端,使用uni.downloadFile()下载文件后再调用uni.saveFile()保存文件,在手机的文件管理器中无法找到下载保存后的文件
uni.downloadFile({
url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-hello-uniapp/2cc220e0-c27a-11ea-9dfb-6da8e309e0d8.mp3',
success: (res) => {
if (res.statusCode === 200) {
console.log('下载成功: ', res.tempFilePath);
// 保存音频到手机
uni.saveFile({
tempFilePath: res.tempFilePath,
success: (res) => {
console.log('文件的保存路径: ', res.savedFilePath);
// 关闭音频下载提示
uni.hideLoading()
// 打开音频下载成功提示
uni.showToast({
title: '保存成功',
icon: 'success',
duration: 2000
})
}
})
}
}
})
保存成功的打印的文件路径: _doc/uniapp_save/17038387375250.mp3
这个是bug还是正常的?如果我想直接打开文件管理器,就能在“最近”里找到这个文件,应该怎样实现呢?
4 个回复
我一笑而过 (作者)
@DCloud_UNI_LXH @DCloud_UNI_GSQ @DCloud_Android_ST 大佬们,能帮忙看看吗?不是Bug吧?
套马杆的套子 - 没有解决不了的问题,只有解决不完的问题
在android-data-你的包名-apps-你的appid-doc
也可以转成base保存
let imageStr = 'data:image/png;base64,' + base64
我一笑而过 (作者)
能找到保存后的文件,但目录挺深的,不太便捷,开发找着都困难,更别说用户了,要保存的是个音频文件,还有更好的办法吗?
2023-12-29 17:41
DCloud_UNI_HRK
android11已经强制采用了分区存储,可以通过5+api来下载文件放到指定目录。缺点:无法后台下载,且依然无法通过最近来找到文件
我一笑而过 (作者)
这个方法我试过了,
通过5+API保存的路径:内部存储设备>Android>data>程序包名>apps>UNI>downloads/storage/emulated/0/测试/测试.mp3
通过uni.saveFile保存的路径:内部存储设备>Android>data>程序包名>apps>UNI>doc>uniapp_save>具体的文件名
5+的方法没有把文件保存在:内部存储设备>storage>emulated>0>测试,这个路径下
测试环境 Android 8.0
2023-12-30 09:51
DCloud_UNI_HRK
回复 我一笑而过: 可以降低sdk版本试试
2024-01-04 19:30
我一笑而过 (作者)
5 的这个方法网上也有分享的,基本都是一样的代码
这个选择软件打开文件也没有实际效果,uni.openDocument()方法倒是能拉起软件弹窗,选择打开,但是不支持音频格式的文件,代码中定义的变量 fileSaveUrl 也没真正使用