Je travaille sur le téléchargement d'images, tout fonctionne très bien, mais j'ai 100 photos et je voudrais toutes les montrer dans mon View
, comme je reçois la liste complète des images dans un dossier, je ne trouve aucune API pour cela travail.
firebase
firebase-storage
Luis Ruiz Figueroa
la source
la source
Réponses:
Depuis les SDK Firebase pour JavaScript version 6.1 , iOS version 6.4 et Android version 18.1 ont tous une méthode pour répertorier les fichiers.
La documentation est un peu clairsemée jusqu'à présent, je vous recommande donc de consulter la réponse de Rosário pour plus de détails.
Réponse précédente, puisque cette approche peut encore être utile à certains moments:
Il n'y a actuellement aucun appel d'API dans le SDK Firebase pour répertorier tous les fichiers d'un dossier Cloud Storage à partir d'une application. Si vous avez besoin d'une telle fonctionnalité, vous devez stocker les métadonnées des fichiers (telles que les URL de téléchargement) dans un endroit où vous pouvez les répertorier. La base de données Firebase Realtime et Cloud Firestore sont parfaits pour cela et vous permettent également de partager facilement les URL avec d'autres.
Vous pouvez trouver un bon exemple (mais quelque peu compliqué) de ceci dans notre exemple d'application FriendlyPix . Le code pertinent pour la version Web est ici , mais il existe également des versions pour iOS et Android.
la source
Depuis mai 2019, la version 6.1.0 du SDK Firebase pour Cloud Storage prend désormais en charge la liste de tous les objets d'un bucket. Il vous suffit d'appeler
listAll()
unReference
:Veuillez noter que pour utiliser cette fonction, vous devez activer la version 2 des règles de sécurité , ce qui peut être fait en créant
rules_version = '2';
la première ligne de vos règles de sécurité:Je recommanderais de vérifier les documents pour plus de références.
De plus, selon la configuration , à l'étape 5, ce script n'est pas autorisé
Node.js
carrequire("firebase/app");
il ne reviendra pas enfirebase.storage()
tant que fonction. Ceci n'est réalisé qu'en utilisantimport * as firebase from 'firebase/app';
.la source
Depuis mars 2017: avec l'ajout de Firebase Cloud Functions et l'intégration plus poussée de Firebase avec Google Cloud, c'est désormais possible.
Avec Cloud Functions, vous pouvez utiliser le package Google Cloud Node pour effectuer des opérations épiques sur Cloud Storage. Vous trouverez ci-dessous un exemple qui récupère toutes les URL de fichiers dans un tableau à partir de Cloud Storage. Cette fonction sera déclenchée chaque fois qu'un élément est enregistré dans le stockage cloud Google.
Remarque 1 : Il s'agit d'une opération assez coûteuse en calcul, car elle doit parcourir tous les fichiers dans un compartiment / dossier.
Note 2 : J'ai écrit ceci juste à titre d'exemple, sans donner beaucoup de détails sur les promesses, etc. Juste pour donner une idée.
J'espère que cela vous donnera une idée générale. Pour de meilleurs exemples de fonctions cloud, consultez le référentiel Github de Google plein d'exemples Cloud Functions pour Firebase . Consultez également leur documentation sur l'API Google Cloud Node
la source
.then
comme ceci:this.bucket .getFiles({ prefix: 'path/to/directory' }) .then((arr) => {})
Puisqu'il n'y a pas de langue répertoriée, je répondrai à cela en Swift. Nous vous recommandons vivement d'utiliser conjointement Firebase Storage et Firebase Realtime Database pour réaliser des listes de téléchargements:
Partagé:
Télécharger:
Télécharger:
Pour plus d'informations, consultez Zero to App: Develop with Firebase , et son code source associé , pour un exemple pratique de la façon de procéder.
la source
Une solution de contournement peut être de créer un fichier (c'est-à-dire list.txt) sans rien à l'intérieur, dans ce fichier, vous pouvez définir les métadonnées personnalisées (c'est-à-dire une Map <String, String>) avec la liste de toutes les URL du fichier.
Donc, si vous avez besoin de télécharger tous les fichiers d'un fodler, vous téléchargez d'abord les métadonnées du fichier list.txt, puis vous parcourez les données personnalisées et téléchargez tous les fichiers avec les URL de la carte.
la source
J'ai également rencontré ce problème lorsque je travaillais sur mon projet. Je souhaite vraiment qu'ils fournissent une méthode api de fin. Quoi qu'il en soit, voici comment je l'ai fait: lorsque vous téléchargez une image sur le stockage Firebase, créez un objet et transmettez cet objet à la base de données Firebase en même temps. Cet objet contient l'URI de téléchargement de l'image.
Plus tard, lorsque vous souhaitez télécharger des images à partir d'un dossier, vous parcourez simplement les fichiers de ce dossier. Ce dossier porte le même nom que le "dossier" dans le stockage Firebase, mais vous pouvez les nommer comme vous le souhaitez. Je les mets dans un fil séparé.
Maintenant, j'ai une liste d'objets contenant les URI de chaque image, je peux faire ce que je veux en faire. Pour les charger dans imageView, j'ai créé un autre fil.
Cela renvoie une liste de Bitmap, quand il est terminé, je les attache simplement à ImageView dans l'activité principale. Les méthodes ci-dessous sont @Override car j'ai des interfaces créées et j'écoute la fin dans d'autres threads.
Notez que je dois attendre que l'image de la liste soit renvoyée en premier, puis appeler le thread pour travailler sur la Bitmap de la liste. Dans ce cas, Image contient l'URI.
Espérons que quelqu'un le trouve utile. Cela me servira également de ligne de guilde à l'avenir.
la source
Une autre façon d'ajouter l'image à la base de données à l'aide de la fonction Cloud pour suivre chaque image téléchargée et la stocker dans la base de données.
Code complet ici: https://gist.github.com/bossly/fb03686f2cb1699c2717a0359880cf84
la source
Pour le nœud js, j'ai utilisé ce code
la source
Vous pouvez lister les fichiers dans un répertoire de stockage Firebase par la méthode listAll (). Pour utiliser cette méthode, vous devez implémenter cette version du stockage Firebase. "com.google.firebase: firebase-storage: 18.1.1"
https://firebase.google.com/docs/storage/android/list-files
Gardez à l'esprit que mettez à niveau les règles de sécurité vers la version 2.
la source
En fait, cela est possible, mais uniquement avec une API Google Cloud au lieu d'une de Firebase. C'est parce qu'un stockage Firebase est un bucket Google Cloud Storage qui peut être facilement atteint avec les API Google Cloud, mais vous devez utiliser OAuth pour l'authentification au lieu de celui de Firebase.
la source
J'ai fait face au même problème, le mien est encore plus compliqué.
L'administrateur téléchargera les fichiers audio et pdf dans le stockage:
audios / saison1, saison2 ... / classe1, fichiers classe 2 / .mp3
livres / fichiers .pdf
L'application Android doit obtenir la liste des sous-dossiers et fichiers.
La solution capture l'événement de téléchargement sur le stockage et crée la même structure sur Firestore à l'aide de la fonction cloud.
Étape 1: Créez manuellement une collection 'stockage' et un document 'audios / livres' sur Firestore
Étape 2: configuration de la fonction cloud
Cela peut prendre environ 15 minutes: https://www.youtube.com/watch?v=DYfP-UIKxH0&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM&index=1
Étape 3: Capturez l'événement de téléchargement à l'aide de la fonction cloud
Étape 4: Récupérez la liste des dossiers / fichiers sur l'application Android à l'aide de Firestore
Étape 5: Obtenez l'URL de téléchargement
Remarque
Nous devons mettre une "sous" collection à chaque élément puisque Firestore ne prend pas en charge la récupération de la liste de la collection.
Il m'a fallu 3 jours pour trouver la solution, j'espère que cela vous prendra 3 heures au maximum.
À votre santé.
la source
Extension de la réponse de Rosário Pereira Fernandes , pour une solution JavaScript:
JavaScript
comme langue par défautfonctions / package.json
listAll
fonctionindex.js
images.js
firebase deploy
pour télécharger votre fonction cloudbuild.gradle
classe kotlin
En ce qui concerne le développement ultérieur de cette fonctionnalité, je suis tombé sur quelques problèmes qui pourraient se trouver ici .
la source
Pour faire cela avec JS
Vous pouvez les ajouter directement à votre conteneur div ou les pousser dans un tableau. Le tableau ci-dessous vous montre comment les ajouter à votre div.
1) Lorsque vous stockez vos images dans le stockage, créez une référence à l'image dans votre base de données Firebase avec la structure suivante
2) Lorsque vous chargez votre document, tirez toutes les URL de source d'image de la base de données plutôt que du stockage avec le code suivant
la source
Vous pouvez utiliser le code suivant. Ici, je télécharge l'image sur le stockage Firebase, puis je stocke l'URL de téléchargement d'image dans la base de données Firebase.
Maintenant, pour récupérer toutes les images stockées dans la base de données Firebase, vous pouvez utiliser
Pour plus de détails, vous pouvez voir mon exemple de post Firebase Storage .
la source
J'avais donc un projet qui nécessitait le téléchargement d'actifs depuis le stockage Firebase, j'ai donc dû résoudre ce problème moi-même. Voici comment :
1- Tout d'abord, créez un modèle de données par exemple
class Choice{}
, dans cette classe définit une variable String appelée image Name, donc ce sera comme ça2- à partir d'une base de données / base de données Firebase, allez et codez en dur les noms d'image sur les objets, donc si vous avez un nom d'image appelé Apple.png, créez l'objet à être
3- Maintenant, récupérez le lien pour les actifs dans votre stockage Firebase qui sera quelque chose comme ça
comme celui-ci
4- enfin, initialisez votre référence de stockage Firebase et commencez à récupérer les fichiers par une boucle comme ça
5- c'est tout
la source
la source
J'utilise
AngularFire
et j'utilise ce qui suit pour obtenir tous lesdownloadURL
la source
Pour Android, la meilleure pratique consiste à utiliser FirebaseUI et Glide.
Vous devez ajouter cela sur votre gradle / application afin d'obtenir la bibliothèque. Notez qu'il a déjà Glide dessus!
Et puis dans votre code utilisez
la source