web-dev-qa-db-fra.com

Après avoir téléchargé un fichier dans Android Firebase Storage, comment télécharger le fichier en téléchargement? getDownloadUrl () ne fonctionne pas

Dans mon nouveau projet Firebase Android, j'ai utilisé la bibliothèque com.google.firebase:firebase-storage:16.0.1.

Je reçois l'erreur suivante:

 enter image description here

J'ai ouvert un autre projet qui avait la bibliothèque firebase-storage:15.0.2 et taskSnapshot.getDownloadUrl(); qui travaillait sur ce projet. mais après avoir utilisé la dernière bibliothèque de dépendances, cela ne fonctionne pas.

Maintenant, comment puis-je obtenir l'URL du fichier?

Un moyen d'obtenir le lien de téléchargement de fichier?

Merci d'avance!

8
Hasib Akter

J'ai trouvé 2 solution de mon problème.

Documentation Google de Firebase :

//add file on Firebase and got Download Link
filePath.putFile(imageUri).continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
    @Override
    public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
        if (!task.isSuccessful()){
            throw task.getException();
        }
        return filePath.getDownloadUrl();
    }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()){
            Uri downUri = task.getResult();
            Log.d(TAG, "onComplete: Url: "+ downUri.toString());
        }
    }
});

Une autre solution! 

C'est plus facile et petit que la documentation de Google Firebase et je vais l'utiliser:

filePath.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                Log.d(TAG, "onSuccess: uri= "+ uri.toString());
            }
        });
    }
});
18
Hasib Akter

Cette méthode est obsolète depuis la version 16.0.1 (vérifiez Notes de publication de Firebase ), vous devez donc utiliser 

StorageReference.getDownloadUrl ()

Si vous souhaitez les obtenir après le téléchargement du fichier, vous devez vérifier leur documentation ici . Il est déjà mis à jour.

4
goblin

taskSnapshot.getDownloadUrl () est obsolète, je vous recommande donc d'utiliser votre méthode storageReference dans votre méthode addOnSuccessListener () et d'appeler la méthode getDownloadUrl () afin d'obtenir l'URL du fichier et de pouvoir en faire ce que vous voulez. J'espère que ça aide.

         mUploadTask = storageRef.putFile(file).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                // get the image Url of the file uploaded
                storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        // getting image uri and converting into string
                        Uri downloadUrl = uri;
                       fileUrl = downloadUrl.toString();


                    }
                });

            }
        });
0
ali sampson

c'est comme ça que je reçois un lien de téléchargement dans kotlin Android.

 ref.putFile(filePath!!)
            .addOnSuccessListener {
            val result = it.metadata!!.reference!!.downloadUrl;
            result.addOnSuccessListener {

               val imageLink = it.toString()


            }
        }
0
Atif AbbAsi