Expo go应用程序在ios16的iPhone上上传图片到Firebase存储时崩溃



有没有人在尝试将图像上传到Firebase商店时遇到react native崩溃的Expo go应用程序?

当我把iPhone升级到ios16时,这个问题就开始了。我可以说问题出在ios16上,因为在另一台安装ios15.7的iPhone和ipad上没有崩溃。所有android手机都不会崩溃。

我的代码在下面,以防检查

useEffect(() => {
const setImageFiles = async () => {
setUploading(true);
const timeStamp = new Date().toISOString();
if (postImage1) {
const firstFilename = await postImage1.substring(
postImage1.lastIndexOf('/') + 1
);
const filenameFirsImage = timeStamp + firstFilename;
setFirstImageFile(filenameFirsImage);
} else {
const secondFilename = await postImage2.substring(
postImage2.lastIndexOf('/') + 1
);
const filenameSecondImage = timeStamp + secondFilename;
setSecondImageFile(filenameSecondImage);
}
setUploading(false);
};
const unsubscribe = NetInfo.addEventListener((state) => {
if (!state.isConnected) {
setIsConnected(false);
Alert.alert('Network Error!', 'You are not connected to the internet');
}
});
setImageFiles();
unsubscribe();
}, []); 

const uploadImage1ToStore = async () => {
setUploading(true);
const blob = await new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.onload = function () {
resolve(xhr.response);
};
xhr.onerror = function () {
reject(new TypeError('Network request failed'));
};
xhr.responseType = 'blob';
xhr.open('GET', postImage1, true);
xhr.send(null);
});
const ref = firebase.storage().ref().child(firstImageFile);
const snapshot = ref.put(blob);
snapshot.on(
firebase.storage.TaskEvent.STATE_CHANGED,
() => {},
(error) => {
setUploading(false);
Alert.alert(error.message);
blob.close();
return;
},
() => {
snapshot.snapshot.ref
.getDownloadURL()
.then((url) => {
setPostImage1Url(url);
})
.catch((error) => {
Alert.alert(error.message);
});
blob.close();
}
);
};

当我尝试在ios模拟器上上传图像到firebase存储时,我遇到了同样的问题。我意识到,在ios上图像大小太高,它会导致错误。你可以使用expo-image-manipulator

来调整它的大小

最新更新