我使用的是本文中的react原生模板。这些代码都可以在Github上找到。
您可以使用该应用程序录制音频并保存到文件系统。我弄清楚了如何检索文件URI,但我发现无法获取文件本身的实际内容。我想做的就是以二进制或ascii或十六进制字符串或其他形式检索实际文件内容(它是一个. m4a文件),因此我可以将其转换为base 64编码,然后将其作为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 });
}
},
我已经尝试了很多东西,但都没有成功。理想情况下,我只是从文件系统中获取文件内容,转换成base64,然后用这种方法将其全部发布到javascript中,但在基于应用程序的框架中,这似乎很难做到这一点。
这里有一些关于React Native Fetch Blob的堆栈溢出问题,我无法解决这些问题Fetch Blob 1 Fetch Blob 2
我曾尝试使用React Native Fs,但我无法正确加载它,在尝试弹出应用程序后,我陷入了无法理解的困境。如果可能的话,我更喜欢纯天然溶液。
我还尝试了一些使用FormData的代码,但也无法实现。
也许答案有点像这个关于从firebase检索图像的问题?我不知道,这是我第一次尝试做任何反应。
这也可能与生成的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
如果有帮助,请告诉我。否则我们可以尝试另一种方法
问题内容: 现在,我通过此行获取File对象: 我需要在base 64中通过json发送此文件。如何将其转换为base64字符串? 问题答案: 现代ES6方式 (异步/等待) UPD: 如果您想捕捉错误
我需要在Base64中通过json发送这个文件。我应该怎么做才能将它转换为base64字符串?
如何获取文件的数据而不是路径?我使用了,它返回文件的路径。 现在我想要的是将文件(而不是路径)转换为Base64。我知道如何将其转换为base64,但我想知道的是如何获取文件的数据。 知道吗?对不起,我是C#的新手 我不知道在这里是否是正确的术语:)
我想把音频文件转换成base64只使用Javascript。 我们可以使用画布将图像转换为base64。但是我们如何转换音频文件。 任何帮助都将感激不尽。
实际上,我希望将文件更改为base64,并附加弹性搜索JSON数据。 下面给出了代码: 当我执行这些查询时,特别是在发布数据时,我会得到以下错误: 这类问题有什么解决办法吗?我试图在附加文件时将数据更改为base64。 帮助?? 甚至,当我给出双引号并执行时: 我得到这个错误 我是不是漏掉了什么?
我必须将对象作为有效负载发送到后端API。如何将Base64图像文件URI转换为下面提到的文件对象格式?我试图寻找其他解决方案,但这些解决方案都是Blob到文件转换或base64数据url转换。谁能帮忙吗? Base64图像文件URL 这需要转化为 文件对象