Estoy tratando de cargar una imagen en el almacenamiento de Firebase, el problema es que aparece Firebase Storage: URL no válida cuando intento cargarla.
Primero obtengo el uri del react-native-image-picker luego lo uso para hacer la referencia. Este es mi código:
export async function uploadImage() { const options = { storageOptions: { path: "images", mediaType: "photo" }, includeBase64: true } const result = await launchImageLibrary(options); const imagePath = result.assets[0].uri console.log(imagePath) //firebase const imageRef = ref(storage, imagePath); const snapshot = await uploadBytes(imageRef, file, { contentType: "image/jpeg", }); console.log("uploaded!") }este es el uri impreso por el archivo console.log:
archivo:///data/user/0/com.chatapp/cache/rn_image_picker_lib_temp_f85b1089-267f-4271-9ccb-2f1487d83619.jpg
mientras carga cualquiera en el almacenamiento de firebase
const uploadImage = async () => { const options: ImageLibraryOptions = { storageOptions: { path: 'images', mediaType: 'photo', }, includeBase64: true, }; const result = await launchImageLibrary(options); if (result) { const {assets} = result; if (assets && assets.length > 0) { try { const imagePath = result.assets[0].uri; console.log(imagePath); //firebase const reference = storage().ref('black-t-shirt-sm.png'); const imageRef = await reference.putFile(imagePath, { contentType: 'image/jpeg', }); console.log('imageRef', imageRef); // const snapshot = await uploadBytes(imageRef, file, { // contentType: 'image/jpeg', // }); console.log('uploaded!'); } catch (error) { console.log('error', error); } } } };para cargar el archivo, debe seguir su guía RN Firebase
la carga de almacenamiento requiere un código específico de la plataforma. Tengo un fragmento de código en mi área de juegos de github con carga de almacenamiento y fragmento de selector de imágenes nativas reactivas Esencialmente
const uri = Platform.OS === 'android' ? uploadUri : uploadUri.replace('file://', ''); const task = storage().ref(ref); return task.putFile(uri);