I'm trying to upload an image with expo react native in iOS 15, so when I take a photo, or pick a picture from gallery the apps crashes at 25% of upload.
When I am downloading a bad quality image from google, the app uploading an image very fastly without crashing.
I think the problem is about the size of the image.
My upload code :
const savePost = async() => {
if(!image) return;
const path = `posts/${auth.currentUser.uid}/${Math.random().toString(36)}`;
const response = await fetch(image);
const blob = await response.blob();
// Upload file and metadata to the object 'images/mountains.jpg'
const storageRef = ref(storage, path);
const uploadTask = uploadBytesResumable(storageRef, blob);
// Listen for state changes, errors, and completion of the upload.
uploadTask.on('state_changed',
(snapshot) => {
// Get task progress, including the number of bytes uploaded and the total number of bytes to be uploaded
const progress = Math.round((snapshot.bytesTransferred / snapshot.totalBytes) * 100);
setprog(progress);
switch (snapshot.state) {
case 'paused':
console.log('Upload is paused');
break;
case 'running':
console.log('Upload is running');
break;
}
},
(error) => {
// A full list of error codes is available at
// https://firebase.google.com/docs/storage/web/handle-errors
switch (error.code) {
case 'storage/unauthorized':
// User doesn't have permission to access the object
console.log("// User doesn't have permission to access the object");
break;
case 'storage/canceled':
// User canceled the upload
console.log("// User canceled the upload");
break;
// ...
case 'storage/unknown':
// Unknown error occurred, inspect error.serverResponse
console.log("// Unknown error occurred, inspect error.serverResponse");
break;
}
},
() => {
// Upload completed successfully, now we can get the download URL
getDownloadURL(uploadTask.snapshot.ref).then((downloadURL) => {
console.log('File available at', downloadURL);
});
}
);
}