【发布时间】:2023-02-02 01:32:25
【问题描述】:
尝试将图像上传到 Firebase 商店时,有没有人经历过 Expo go app for react native 崩溃?
当我将 iPhone 更新到 ios16 时,这个问题就开始了。我可以说问题出在 ios16 上,因为在另一部装有 ios15.7 的 iPhone 和 ipad 上没有崩溃。所有安卓手机也不会崩溃。
我的代码在下面以防万一检查
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();
}
);
};
【问题讨论】:
标签: javascript firebase react-native expo firebase-storage