You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中如何将Blob读取为ArrayBuffer?

React Native中Blob转ArrayBuffer的替代方案

React Native内置的FileReader确实未实现readAsArrayBuffer()方法,以下是几种可行的解决办法:

方法1:直接从Base64生成ArrayBuffer(推荐)

既然你已经持有Base64字符串,无需先转成Blob再转换,直接将Base64转为ArrayBuffer即可,省去中间冗余步骤:

const b64ToArrayBuffer = (b64Data) => {
  const byteCharacters = atob(b64Data);
  const byteArray = new Uint8Array(byteCharacters.length);
  for (let i = 0; i < byteCharacters.length; i++) {
    byteArray[i] = byteCharacters.charCodeAt(i);
  }
  return byteArray.buffer;
};

// 使用示例
const arrayBuffer = b64ToArrayBuffer(yourBase64String);
const msgReader = new Utils.MsgToHmtl.MSGReader(arrayBuffer);
const fileData = msgReader.getFileData();
console.log(fileData);

方法2:使用react-native-blob-util库

这个第三方库提供了完整的Blob操作支持,可实现Blob与ArrayBuffer的转换:

  1. 安装依赖:
npm install react-native-blob-util
# 或
yarn add react-native-blob-util
  1. 转换代码示例:
import ReactNativeBlobUtil from 'react-native-blob-util';

// 基于你已有的blob对象进行转换
ReactNativeBlobUtil.blobToBase64(blob)
  .then(base64 => {
    const arrayBuffer = b64ToArrayBuffer(base64);
    const msgReader = new Utils.MsgToHmtl.MSGReader(arrayBuffer);
    const fileData = msgReader.getFileData();
    console.log(fileData);
  })
  .catch(error => console.error(error));

方法3:通过react-native-fs读取本地文件(若文件存储在本地)

如果目标文件是本地存储的文件,可借助react-native-fs读取为Base64后再转成ArrayBuffer:

import RNFS from 'react-native-fs';

RNFS.readFile(filePath, 'base64')
  .then(base64 => {
    const arrayBuffer = b64ToArrayBuffer(base64);
    const msgReader = new Utils.MsgToHmtl.MSGReader(arrayBuffer);
    const fileData = msgReader.getFileData();
    console.log(fileData);
  })
  .catch(error => console.error(error));

内容的提问来源于stack exchange,提问作者Vishwajeet Gade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 09:36:21