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:
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!
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());
}
});
}
});
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.
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();
}
});
}
});
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()
}
}