Necesito eliminar imágenes del almacenamiento de firebase (react.js), pero cuando intento recuperar la URL, la consola me da: FirebaseError: Firebase Storage: Object 'images/[object Object]' does not exist. (almacenamiento/objeto no encontrado) { "error": { "código": 404, "mensaje": "No encontrado". } }
Este es el código:
const deleteFromFirebase = (url) => { let imageRef = storage.ref(`/images/${url}`); imageRef.delete().then(() => { console.log("Deleted") }).catch(err => console.log(err)) };
¿Necesito insertar el índice?
imageUrl
no es una URL Puede probarlo insertando el siguiente console.log
en la parte superior de su función:
const deleteFromFirebase = (url) => { console.log(JSON.stringify(url, null, 2);
Una URL es algo como https://stackoverflow.com/questions/70558620/firebase-delete-images-from-url
. No le gustaría almacenar su imagen en la siguiente ubicación, ¿verdad?
/images/https://stackoverflow.com/questions/70558620/firebase-delete-images-from-url
Por lo tanto, sugiero que en su función "deleteFromFirebase" no la llame una URL, sino una "ruta dentro de la carpeta de imágenes" o algo así, que reducirá el margen de confusión.
const imageUrl = await storage.ref('images').child(uploadTask.metadata.name).getDownloadURL(); console.log("Original value is ",imageUrl)
Sospecho que está devolviendo una URL extra larga, tal vez con cosas adicionales agregadas al final para otorgar permisos para descargar, etc.
Revisa toda tu terminología. Hay dos cosas separadas.
house.png
;https://google.something.blahblah/bucketName/blah blah?downloadKey=239850598745
Así que cuando estés cargando, deja esto claro:
const pathWithinImages = uploadTask.metadata.name const downloadUrl = await storage.ref('images').child(pathWithinImages).getDownloadURL();
Almacene tanto pathWithinImages
como downloadUrl
.
Cuando venga a eliminar la imagen, use pathWithinImages
.
const deleteFromFirebase = (pathWithinImages) => { storage.ref(`/images/${pathWithinImages}`) .delete() .then(() => { console.log("Deleted") }).catch(err => console.log(err)) };