es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mi ejemplo. downloadURL devuelve un valor no definido.

Estoy intentando simplemente probar cómo subir imágenes y quiero mostrar la imagen que se ha subido.
Mi código se ve así:

function uploadFile(files){
    const storageRef = firebase.storage().ref(); //esto hace referencia al almacenamiento de firebase

    const horseRef = storageRef.child("horse.jpg");

    const file = files.item(0); //devolverá una lista, así que tomemos el primer elemento

    const task = horseRef.put(file); //para cargar el archivo llamamos a la función put file
    console.log(task);

    task.then(snapshot => { //devuelve muchos datos, incluyendo una URL de instantánea
        const url = snapshot.downloadURL
        document.getElementById("upload").setAttribute("src", url)
    });
}

Pero snapshot.downloadURL está devolviendo undefined. ¿Puede ayudarme?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedo ayudarte con este problema. La propiedad downloadURL ha sido reemplazada con el método getDownloadURL() en la versión 4 del SDK de Firebase Storage. A continuación, se muestra el código actualizado:

    function uploadFile(files){
        const storageRef = firebase.storage().ref(); // esto hace referencia al almacenamiento de Firebase
    
        const horseRef = storageRef.child("horse.jpg");
    
        const file = files.item(0); // devolverá una lista, así que tomemos el primer elemento
    
        const task = horseRef.put(file); // para cargar el archivo, llamamos a put file
        console.log(task);
    
        task.then(snapshot => { // devuelve un montón de datos, incluida una URL de instantánea
            snapshot.ref.getDownloadURL()
                .then(url => {
                    document.getElementById("upload").setAttribute("src", url);
                }).catch(error => {
                    console.log(error.message);
                });
        });
    }
    

    Ten en cuenta que el método getDownloadURL() devuelve una promesa que debe manejarse con las funciones .then() y .catch() como se muestra arriba. Además, asegúrate de haber inicializado correctamente tu aplicación de Firebase y tener los permisos necesarios para acceder y cargar archivos en tu bucket de Firebase Storage.

Comments are closed.