Javascript 通过XMLHttpRequest创建Blob时发生反应本机错误
我正在开发一个React原生应用程序,其中照片和文档是所需的主要功能之一。用户经常在他们的设备上拍照,我们使用本地uri制作一个blob,并使用他们的AWS sdk上传到AWS S3 我们用于将本地uri转换为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
// 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'),并将照片/文档不断上传到本机端