API getFileSystemManager is not yet implemented in uni-app
API getFileSystemManager is not yet implemented in uni-app
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | 1.0.0 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:4.66
手机系统:Android
手机系统版本号:Android 15
手机厂商:小米
手机机型:小米13
页面类型:vue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
示例代码:
/** 初始化录音监听 */
initRecorderListeners() {
const recorder = this.recorderManager;
// 录音开始(用户按下按钮)
recorder.onStart(() => {
console.log('录音启动');
this.isPressing = true;
this.tipText = '正在录音...';
this.asrText = '';
this.statusText = '';
this._startRecordTimer(); // 开始计时(显示已录时长)
});
// 录音停止(用户抬起按钮)
recorder.onStop((res) => {
console.log('录音停止,临时路径:', res.tempFilePath);
this.isPressing = false;
this.tipText = '识别中...';
this.isProcessing = true;
this.audioPath = res.tempFilePath;
// 延迟确保录音文件已生成
setTimeout(() => {
this.fileToBase64(res.tempFilePath)
.then(base64 => {
console.log('base64----',base64);
})
.catch(err => {
console.error('处理失败:', err);
});
}, 500);
});
// 录音错误处理
recorder.onError((err) => {
console.error('录音失败:', err);
this.resetUI('录音失败,请重试');
});
},
// 文件转Base64
fileToBase64(tempFilePath) {
console.log('url----',tempFilePath);
return new Promise((resolve, reject) => {
uni.getFileSystemManager().readFile({
filePath: tempFilePath,
encoding: 'base64',
success: (res) => {
resolve(res.data); // 纯Base64字符串
},
fail: (err) => {
reject('读取文件失败: ' + err.errMsg);
}
});
});
},
操作步骤:
// 文件转Base64
fileToBase64(tempFilePath) {
console.log('url----',tempFilePath);
return new Promise((resolve, reject) => {
uni.getFileSystemManager().readFile({
filePath: tempFilePath,
encoding: 'base64',
success: (res) => {
resolve(res.data); // 纯Base64字符串
},
fail: (err) => {
reject('读取文件失败: ' + err.errMsg);
}
});
});
},
预期结果:
返回base64
实际结果:
API `getFileSystemManager` is not yet implemented
TypeError: Cannot read property 'readFile' of undefined
更多关于API getFileSystemManager is not yet implemented in uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个api只有鸿蒙支持,参考官方文档 https://uniapp.dcloud.net.cn/api/file/getFileSystemManager.html#getfilesystemmanager
更多关于API getFileSystemManager is not yet implemented in uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html
只有鸿蒙支持的情况下,有其他支持安卓/ios的api吗
Android、ios 不支持,仅鸿蒙支持
https://uniapp.dcloud.net.cn/api/file/getFileSystemManager.html
app-plus 可参考 Plus api
请问对应plus中的哪个方法 ,看了一下文档没找到对应的
uni.getFileSystemManager() 在App平台不可用,这是小程序平台的API。在uni-app的App端,应该使用H5+ API来处理文件操作。
建议修改 fileToBase64 方法:
fileToBase64(tempFilePath) {
return new Promise((resolve, reject) => {
// App平台使用plus.io API
plus.io.resolveLocalFileSystemURL(tempFilePath, (entry) => {
entry.file((file) => {
const reader = new plus.io.FileReader();
reader.onload = (e) => {
// 移除data URL前缀,只保留纯base64
const base64 = e.target.result.split(',')[1];
resolve(base64);
};
reader.onerror = (e) => {
reject('文件读取失败');
};
reader.readAsDataURL(file);
}, reject);
}, reject);
});
}
或者使用更简洁的uni API方案:
fileToBase64(tempFilePath) {
return new Promise((resolve, reject) => {
// 直接使用uni API转换为base64
const fs = uni.getFileSystemManager ? uni.getFileSystemManager() : plus.io;
if (uni.getFileSystemManager) {
// 小程序环境
uni.getFileSystemManager().readFile({
filePath: tempFilePath,
encoding: 'base64',
success: (res) => resolve(res.data),
fail: reject
});
} else {
// App环境
plus.io.resolveLocalFileSystemURL(tempFilePath, (entry) => {
entry.file((file) => {
const reader = new plus.io.FileReader();
reader.onload = (e) => resolve(e.target.result.split(',')[1]);
reader.onerror = reject;
reader.readAsDataURL(file);
}, reject);
}, reject);
}
});
}

