Comment faire pour obtenir l'URL de Firebase de Stockage getDownloadURL
Je vais essayer d'obtenir le "long terme persistant lien de téléchargement" aux fichiers dans notre Firebase seau de rangement.
J'ai changé les permissions de ce
service firebase.storage {
match /b/project-xxx.appspot.com/o {
match /{allPaths=**} {
allow read, write;
}
}
}
Et mon javacode ressemble à ceci:
private String niceLink (String date){
String link;
//Points to the root reference
StorageReference storageRef = FirebaseStorage.getInstance().getReference();
StorageReference dateRef = storageRef.child("/" + date+ ".csv");
link = dateRef.getDownloadUrl().toString();
return link;
}
Lorsque j'exécute ce que je obtenir de l'uri lien qui ressemble à quelque chose comme
com.google.android.gms.tasks.zzh@xxx
Question 1. Puis-je de cette obtenir le lien de téléchargement: https://firebasestorage.googleapis.com/v0/b/project-xxxx.appspot.com/o/20-5-2016.csv?alt=media&token=b5d45a7f-3ab7-4f9b-b661-3a2187adxxxx
En essayant d'obtenir le lien ci-dessus j'ai changé la dernière ligne avant mon retour, comme ceci:
private String niceLink (String date){
String link;
//Points to the root reference
StorageReference storageRef = FirebaseStorage.getInstance().getReference();
StorageReference dateRef = storageRef.child("/" + date+ ".csv");
link = dateRef.getDownloadUrl().getResult().toString();
return link;
}
Mais de cette façon, j'obtiens une erreur 403, et de l'application crash. La console me dit que c'est bc utilisateur n'est pas connecté /auth.
"Veuillez vous connecter avant de demander de l'jeton"
La Question 2. Comment puis-je résoudre ce problème?
OriginalL'auteur Jonathan Fager | 2016-05-22
Vous devez vous connecter pour publier un commentaire.
Lorsque vous appelez
getDownloadUrl()
, l'appel est asynchrone et vous devez vous abonner à un rappel réussi à obtenir les résultats:Cela renvoie un public impossible à deviner l'url de téléchargement. Si vous venez de télécharger un fichier, cette url publique sera dans la réussite de rappel de l'upload (vous n'avez pas besoin d'appeler une autre méthode async après que vous avez téléchargé).
Cependant, si tout ce que vous voulez, c'est un
String
représentation de la référence, vous pouvez simplement appeler.toString()
1. Désolé, il aurait été addOnSuccessListener (faute de frappe) 2. lorsque vous obtenez une erreur "doit être en finale" en java, cela signifie qu'il ya un problème la fermeture. Voir stackoverflow.com/questions/1299837/... pour plus d'informations. Fondamentalement, la réponse courte est, définir le "lien" de la variable en tant que membre de la classe et il doit être fine.
A travaillé comme un charm après quelques modifications! Merci pour l'aide!
OriginalL'auteur Benjamin Wulfe
//Firebase facile et de Travail uploads et downloads.
@Override
OriginalL'auteur Subhojit Halder
OriginalL'auteur Raj
ici, je suis le téléchargement et l'obtention de l'url de l'image en même temps...
OriginalL'auteur Shrawan