294 votes

Firebase Storage Comment stocker et récupérer des images

Comment stocker et afficher des images sur firebase ?

1 votes

C'est cool, si je stocke des images en utilisant firebase, je peux utiliser les logins firebase pour la sécurité.

7 votes

Depuis hier, Firebase a publié une nouvelle fonctionnalité, appelée Firebase Storage (firebase.google.com/docs/storage), qui vous permet de charger et de télécharger des fichiers arbitraires (images, vidéo, audio, etc.). Il est soutenu par Google Cloud Storage (cloud.google.com/storage) pour une échelle de pétaoctets et un prix compétitif. Vous devriez absolument jeter un coup d'œil à ce site :)

0 votes

Vous pourriez bloquer l'image et obtenir une URL de service à l'aide du service Google Images, puis stocker l'URL de service. Ensuite, il suffit de charger les images dans une méthode asynchrone lorsqu'elles sont affichées.

288voto

Michael Lehenbauer Points 4538

Mise à jour (20160519) : Firebase vient de publier une nouvelle fonctionnalité appelée Stockage Firebase . Cela vous permet de télécharger des images et d'autres données non JSON vers un service de stockage dédié. Nous vous recommandons vivement d'utiliser ce service pour stocker des images, au lieu de les stocker sous forme de données codées en base64 dans la base de données JSON.

Vous pouvez certainement le faire ! En fonction de la taille de vos images, vous avez plusieurs possibilités :

1. Pour les petites images (moins de 10mb)

Nous avons un exemple de projet qui fait cela ici : https://github.com/firebase/firepano

L'approche générale consiste à charger le fichier localement (en utilisant FileReader) pour pouvoir ensuite le stocker dans Firebase comme n'importe quelle autre donnée. Les images étant des fichiers binaires, vous voudrez obtenir le contenu codé en base64 afin de pouvoir le stocker sous forme de chaîne. Ou, ce qui est encore plus pratique, vous pouvez le stocker sous la forme d'un fichier données : url qui est alors prêt à être placé comme src d'une balise img (c'est ce que fait l'exemple) !

2. Pour des images plus grandes

Firebase a une limite de 10mb (de données de chaînes codées en utf8). Si votre image est plus grande, vous devrez la diviser en morceaux de 10 Mo. Vous avez cependant raison de dire que Firebase est plus optimisé pour les petites chaînes qui changent fréquemment que pour les chaînes de plusieurs mégaoctets. Si vous avez beaucoup de données statiques volumineuses, je recommanderais certainement S3 ou un CDN à la place.

2 votes

C'est génial. Avez-vous déjà rencontré une limitation de la taille des fichiers ? Je ne pense pas que Firebase ait été conçu pour des chaînes de plusieurs mégaoctets...

8 votes

Firebase a une limite de 10 mb (de données de chaînes codées en utf8). Si votre image est plus grande, vous devrez la diviser en morceaux de 10 Mo. Vous avez cependant raison de dire que Firebase est plus optimisé pour les petites chaînes qui changent fréquemment que pour les chaînes de plusieurs mégaoctets. Si vous avez beaucoup de données statiques volumineuses, je recommanderais certainement S3 ou un CDN à la place.

1 votes

Ce que j'envisage actuellement, c'est d'utiliser Firebase avec la plateforme Parse, qui permet de stocker très facilement des objets tels que des images et des sons, mais qui n'offre pas l'aspect temps réel.

27voto

user15163 Points 631

Oui, vous pouvez stocker et afficher des images dans Firebase. Vous pouvez utiliser un filepicker pour obtenir le fichier image. Ensuite, vous pouvez héberger l'image comme vous le souhaitez, je préfère Amazon s3. Une fois l'image hébergée, vous pouvez l'afficher en utilisant l'URL générée pour l'image.

J'espère que cela vous aidera.

3 votes

Consultez la documentation mise à jour de firbase pour cela : firebase.google.com/docs/storage/#key_functions

0 votes

Si vous comptez héberger l'image sur amazon, pourquoi ne pas l'enregistrer dans le fichier Stockage Firebase à la place ?

20voto

Grendel2501 Points 33

J'ai fini par stocker moi-même les images au format base64. Je les traduis à partir de leur valeur base64 lorsqu'elles sont rappelées par firebase.

1 votes

Le seul problème de cette approche est que, lorsque les images sont volumineuses, leur déplacement entre les activités ralentit l'application, voire la fait planter.

11voto

Felice Points 306

Vous pouvez également utiliser un service appelé Filepicker qui stockera votre image sur leurs serveurs et Sélecteur de fichiers qui s'appelle désormais Filestack, vous fournira l'URL de l'image. Vous pouvez ensuite stocker l'url sur Firebase.

0 votes

J'ai vu ce service grâce à votre commentaire. J'ai essayé mais je n'en suis pas très satisfait.

3voto

Jakob Hartman Points 3

Il y a plusieurs façons de faire. J'ai d'abord fait comme Grendal2501. J'ai ensuite fait comme user15163, vous pouvez stocker l'URL de l'image dans firebase et héberger l'image sur votre hôte firebase ou aussi Amazon S3 ;

0 votes

Erreur 403 en essayant d'insérer et de rendre des images - j'ai des problèmes d'autorisation avec les images une fois téléchargées - des informations sur la façon dont vous avez configuré le téléchargement. J'ai essayé d'utiliser acl : 'public-read' - mais le téléchargement échoue - avec une erreur 403. Toute information sur la documentation de la politique et la politique des seaux qui pourrait m'aider serait la bienvenue. AWS - la documentation est difficile et il n'y a aucune information de débogage avec les erreurs autres que l'accès refusé.

2 votes

Posez cette question comme une autre question

0 votes

Bonne idée :) c'est fait - bien que la pile puisse être différente - si vous pouvez me donner des indications, elles seront les bienvenues. Le débogage des erreurs AWS S3 est super frustrant - du moins jusqu'à présent. stackoverflow.com/questions/31998827/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X