Javascript 通过XMLHttpRequest创建Blob时发生反应本机错误

Javascript 通过XMLHttpRequest创建Blob时发生反应本机错误,javascript,image,react-native,blob,Javascript,Image,React Native,Blob,我正在开发一个React原生应用程序,其中照片和文档是所需的主要功能之一。用户经常在他们的设备上拍照,我们使用本地uri制作一个blob,并使用他们的AWS sdk上传到AWS S3 我们用于将本地uri转换为blob的函数如下: // https://github.com/expo/expo/issues/2402 - comment by "sjchmiela" const convertUriToBlob = uri => { return new Promise((resolv

我正在开发一个React原生应用程序,其中照片和文档是所需的主要功能之一。用户经常在他们的设备上拍照,我们使用本地uri制作一个blob,并使用他们的AWS sdk上传到AWS S3

我们用于将本地uri转换为blob的函数如下:

// https://github.com/expo/expo/issues/2402 - comment by "sjchmiela"
const convertUriToBlob = uri => {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest();
    xhr.onerror = err => {
      reject(err);
    };
    xhr.onreadystatechange = () => {
      if (xhr.readyState === 4) {
        resolve(xhr.response || xhr._response);
      }
    };
    xhr.open('GET', uri);
    xhr.responseType = 'blob'; // convert type
    xhr.send();
  });
};
在某些本地URI上使用此函数时,有时会出现导致设备崩溃的错误:

我想了解更多关于这个blob错误的信息,或者寻找更好的方法来处理从设备上传大量照片/文档的问题

RN版本为“react native”:“0.57.4”


编辑:

当RN试图通过网桥发送Blob数据时,使用XMLHttpRequest生成Blob而不是出现错误时,我无法理解为什么会收到错误

我试图在
rn fetch Blob
pkg中使用Blob polyfill,这阻止了上述错误,但是AWS SDK的polyfill出现问题,并上传了损坏的数据


我现在只是直接使用
rn fetch blob
pkg将设备中的文件读入base64编码字符串,并将其转储到Uint8Array中

提到将文件读入base64的答案有助于避免默认react native blob polyfill导致的崩溃,但仍不建议将其用于生产应用程序!上传照片/文档时仍有大量崩溃,由于将base64字符串传输回桥接器,该应用程序在上传时的性能受到了巨大的影响

公认的答案是使用
rn fetch blob
及其RNFetchBlob.fetch('PUT | POST',url,headers,LOCAL_PATH_to_FILE'),并将照片/文档不断上传到本机端