q***@qq.com
q***@qq.com
  • 发布:2024-03-21 23:44
  • 更新:2024-04-06 22:04
  • 阅读:153

Uniapp获取本地的录音文件上传到服务器

分类:uni-app

技术Uniapp 打包安卓App
业务场景是
当用户登录时 获取到用户拨打电话时的录音
现在我用 原生Plus.io 以及 uni.getFileSystemManager
都只能拿到 /storage/emulated/0/Android/data/io.dcloud.uniappx/files 沙盒文件里面的文件
但是我想获取公共的系统文件 /storage/emulated/0/Musiic 的音频
有实现过这个功能的兄弟吗?
我想拿到本地的音频File流上传到服务器
求指导 能实现必有重谢。

2024-03-21 23:44 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com - 111111

如果有权限的话,直接这样就可以访问,App端。
// 导入 java.io.File 类
var File = plus.android.importClass('java.io.File');
// 创建 File 对象,指定目录路径
var file = new File(’/storage/emulated/0/Music/‘ + 文件名.后缀);
let fileName = file.getName(); // 文件名
let fileSize = file.length(); // 文件大小
let filePath = file.getAbsolutePath(); // 文件路径

uni.uploadFile({
url: ‘url',
filePath: filePath,
header: {
'content-type' : 'multipart/form-data'
},
name: 'file',
formData: {
。。。
}
});

"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.MANAGE_EXTERNAL_STORAGE\"/>"

可以试试。

q***@qq.com

q***@qq.com (作者)

嗯,一定要有权限

"<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>"

然后做相关的处理如下:
plus.io.resolveLocalFileSystemURL(dirPath, function(entrys) {
// 成功获取目录对象后,使用createReader读取目录内容
var reader = entrys.createReader();
reader.readEntries(function(entries) {
// console.log(entries.length,"@11221")
entries.forEach(function(entry) {
// console.log(entry.isFile,"sss")
// 遍历目录下的每个文件
if (entry.isFile) {
// 获取文件流
var filePath = entry.toLocalURL();
plus.io.resolveLocalFileSystemURL(filePath, function(fileEntry) {
fileEntry.file(function(file) {
var path = _this.getFileExtension(filePath);
var fileReader = new plus.io.FileReader();
fileReader.readAsDataURL(file, 'utf-8');
fileReader.onloadend = function(evt) {
console.log(filePath)
//执行数据上传的处理
_this.uploadFileInfo(evt.target.result,path,filePath,file)
}
});
});
}else{
uni.setStorageSync('mp3Status','没有可上传录音')
}
});
}, function(e) {
console.log("读取目录失败: " + e.message);
uni.setStorageSync('mp3Status','读取目录失败,请重新更新:' + fileAddress)
});
}, function(e) {
console.log("获取目录对象失败: " + e.message);
uni.setStorageSync('mp3Status','读取目录失败,请重新更新:' + fileAddress)
});

要回复问题请先登录注册