我正在使用本文中的react native模板。该代码在Github上都可用。

您可以使用该应用程序录制音频并保存到文件系统。我想出了如何获取文件URI的方法,但是我发现无法获取文件本身的实际内容。我要做的就是检索二进制或ascii或十六进制字符串等形式的实际文件内容(这是一个.m4a文件),因此我可以将其转换为base64编码,然后将其作为JSON发布到我的服务器。这是我的代码:

/src/screens/RecordAudioScreen/RecordAudioScreenContainer.js
onEndRecording: props => async () => {
try {
// here is the URI
console.log("HERE IS THE URI!!");
const audio_data ="URI:" + props.recording._uri;
// Help needed here
// retrieve file contents from the Android/iOS file system
// Encode as base64
audio_data = ... // ???????
// this works already, posts to the server
fetch("https://myserver.com/accept_file",
{
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
method:"POST",
body: JSON.stringify({user_id: 1, audio_data: audio_data})
})
.then(function(res){ console.log(res) })
.catch(function(res){ console.log(res) });
console.log("FINISHED POST REQUEST!!!")
await props.recording.stopAndUnloadAsync();
await props.setAudioMode({ allowsRecordingIOS: false });
} catch (error) {
console.log(error); // eslint-disable-line
}
if (props.recording) {
const fileUrl = props.recording.getURI();
props.recording.setOnRecordingStatusUpdate(null);
props.setState({ recording: null, fileUrl });
}
},

我已经尝试了很多东西,但都没有成功。理想情况下,我只是从File系统中获取文件内容,将其转换为base64并将其通过javascript中的所有方法发布出去,但这对于在基于应用程序的框架中应该是相当标准的事情似乎非常困难。

这是关于React Native Fetch Blob的一些堆栈溢出问题,我无法正常工作Fetch Blob 1 Fetch Blob 2

我已经尝试过使用React Native Fs,但是我无法使其正常加载,在尝试退出该应用程序后,我陷入了我不了解的东西的深深困扰。如果可能的话,我更喜欢一个简单的React Native解决方案。

我还尝试了一些使用FormData的代码,但也无法正常工作。

也许答案有点像关于从Firebase检索图像的问题?我不知道,这是我在React中做任何事情的第一次尝试。

它也可能与生成的URI中的" file://"前缀有关,因为在讨论删除该前缀时有很多问题(仅针对Android,或者对于iOS,我不太清楚)。

转换为base64将通过以下方式完成,但是我首先需要实际的文件内容:

非常感谢您的帮助。

前段时间,我写了一个简单的录音语音应用程序示例。

要获取文件,我使用了这种方法:

import RNFS from 'react-native-fs';
(...)
getFiles() {
RNFS.readDir(AudioUtils.DocumentDirectoryPath)
.then((result) => {
this.setState({recordedFiles: result});
return Promise.all([RNFS.stat(result[0].path), result[0].path]);
})
.catch((err) => {
console.log(err.message, err.code);
});
}

工作正常。

这是完整的示例https://github.com/soutot/react-native-voice-record-app

让我知道是否有帮助。 否则我们可以尝试其他方法

在接下来的几天里,我会仔细研究一下,并告诉您。 谢谢。

我尝试下载存储库,但由于必须安装Android环境,因此在运行react-native run-android时遇到问题。在接下来的三周中,我非常忙,但是一旦Ive完成了我当前的项目,Ill就会恢复工作。 更新待定!

没问题。 请让我知道它是否解决了您的问题,或者您对此有任何疑问

我今天下午在应用程序上做了一些工作,一旦设置了Android Dev环境,我就可以在短短几个小时内使它完全按照我的要求工作!