React Native Expo - 文件系统 readAsStringAsync 字节分配失败(内存不足)
Posted
技术标签:
【中文标题】React Native Expo - 文件系统 readAsStringAsync 字节分配失败(内存不足)【英文标题】:React Native Expo - FileSystem readAsStringAsync Byte Allocation Failed (Out of Memory) 【发布时间】:2021-11-19 05:26:21 【问题描述】:我正在使用带有 Expo 模块(文件系统和 Expo AV)的 React Native 创建一个 android 应用程序,以使用手机的摄像头录制本地视频,然后将编码的 base64 视频发送到服务器。
发送base64字符串的代码如下:
const encodeBase64 = async () =>
const fileUri = videoUri;
const options =
encoding: FileSystem.EncodingType.Base64,
;
let result = await FileSystem.readAsStringAsync(fileUri, options);
return result;
;
const upload = async () =>
const base64 = await encodeBase64(videoUri);
const result = await myAPI(base64);
它可以在我的手机(Oppo A3s)上运行,但在三星 A51 等另一部手机上,它会出现如下内存分配错误:
如何解决这个问题?
【问题讨论】:
【参考方案1】:这是内存错误。 每部手机的存储空间都不同。 您可以使用块缓冲区。 因此,在这种情况下,您可以拆分 base64 数据以发布到服务器并在服务器中合并数据。
ex: client=> chunkbuffer=>1024*100(size) 服务器=> 组合(客户端数据数组)
祝你好运。 如果您有任何问题,请与我联系。 我会随时帮助你。
【讨论】:
以上是关于React Native Expo - 文件系统 readAsStringAsync 字节分配失败(内存不足)的主要内容,如果未能解决你的问题,请参考以下文章
React Native - Expo:fontFamily 'SimpleLineIcons' 不是系统字体,尚未通过 Font.loadAsync 加载
使用 Expo 在 react-native 上共享图像和文件
如何在 expo react native 中使用 sqlite 文件
如何为 create-react-native-app 生成 apk 文件(使用 EXPO.IO 组件)
React Native - 如何构建 expo react native 应用程序,使其不需要 Expo android 应用程序打开