Stockage Firebase Comment stocker et récupérer des images [fermé]


269

Comment stocker et visualiser des images sur Firebase?


1
C'est cool, si je stocke des images en utilisant Firebase, je peux utiliser des connexions Firebase pour la sécurité
mrwaim

6
Depuis hier, Firebase a publié une nouvelle fonctionnalité, appelée Firebase Storage (firebase.google.com/docs/storage), qui vous permet de télé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 en pétaoctets et un prix compétitif. Vous devriez certainement vérifier cela :)
Mike McDonald

16
Les utilisateurs le trouvent utile, pourquoi le fermer?
Amr Lotfy

7
@TinyGiant Ce n'est pas une recommandation, alors pourquoi serait-elle fermée en tant que telle? Il s'agit d'une caractéristique d'un service logiciel - complètement sur le sujet.

2
je déteste les commentaires fermés prématurés. les questions simples ne doivent pas être fermées pour l'amour de Dieu!
Jeryl Cook

Réponses:


277

Mise à jour (20160519) : Firebase vient de publier une nouvelle fonctionnalité appelée Firebase Storage . 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 de l'utiliser pour stocker des images, au lieu de les stocker en tant que données encodées en base64 dans la base de données JSON.

Vous le pouvez certainement! Selon la taille de vos images, vous avez deux options:

1. Pour des images plus petites (moins de 10 Mo)

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

L'approche générale consiste à charger le fichier localement (à l'aide de FileReader) afin que vous puissiez ensuite le stocker dans Firebase comme vous le feriez pour toute autre donnée. Étant donné que les images sont des fichiers binaires, vous souhaiterez obtenir le contenu encodé en base64 afin de pouvoir le stocker sous forme de chaîne. Ou encore plus pratique, vous pouvez le stocker sous forme de données: url qui est alors prêt à apparaître comme le src d'une balise img (c'est ce que fait l'exemple)!

2. Pour des images plus grandes

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


2
C'est génial. Avez-vous déjà rencontré une limitation de taille de fichier? Je ne pense pas que Firebase ait été fait avec des chaînes de plusieurs mégaoctets à l'esprit ...
MasterScrat

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

14
Firebase a vraiment besoin d'ajouter un stockage plus important à leur système d'hébergement, ou une instance s3 avec des API intégrées dans leurs bibliothèques.
The_Brink

9
@The_Brink Merci pour la rétroaction. C'est définitivement sur notre radar!
Michael Lehenbauer

4
@ezain C'est exact. Je ne recommanderais probablement pas cette approche pour les grands sites de production (vous voulez vraiment un service de service d'image soutenu par CDN), mais c'est facile et "assez bon" pour beaucoup d'utilisation.
Michael Lehenbauer

25

Oui, vous pouvez stocker et afficher des images dans Firebase. Vous pouvez utiliser un sélecteur de fichiers 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 à l'aide de l'URL générée pour l'image.

J'espère que cela t'aides.


3
Consultez les documents firbase mis à jour pour cela: firebase.google.com/docs/storage/#key_functions
Lukas Liesis

Si vous allez héberger l'image sur Amazon, pourquoi ne pas l'enregistrer dans Firebase Storage à la place?
Ojonugwa Jude Ochalifu

19

J'ai fini par stocker moi-même les images au format base64. Je les convertis à partir de leur valeur base64 lorsqu'ils sont rappelés depuis Firebase.


1
Le seul problème avec cette approche est que lorsque les images sont grandes, les déplacer entre les activités rend l'application lente et dans certains cas se
bloque

10

Vous pouvez également utiliser un service appelé Filepickerqui stockera votre image sur leurs serveurs et Filepicker, qui s'appelle désormais Filestack, vous fournira une URL vers l'image. Vous pouvez alors stocker l'URL dans Firebase.


J'ai vu ce service à partir de votre commentaire, j'ai essayé mais pas très content.
bpolat

3

Il y a plusieurs façons de faire. J'ai d'abord fait comme Grendal2501. Je l'ai ensuite fait de manière similaire à user15163, vous pouvez stocker l'URL de l'image dans la base de feu et héberger l'image sur votre hôte de base de feu ou également Amazon S3;


Erreur 403 en essayant d'insérer et de rendre des images - ayant des problèmes d'autorisation avec les images une fois téléchargées - toute information sur la façon dont vous configurez le téléchargement. J'ai essayé d'utiliser acl: 'public-read' - mais ensuite le téléchargement échoue - avec un 403. Toute politique de doc et de bucket de politique d'informations qui pourrait aider - serait géniale. AWS - la documentation est difficile et il n'y a pas d'informations de débogage avec une erreur autre que l'accès refusé.
jamie

2
Posez cette question comme une autre
Jakob Hartman

bonne idée :) fait - bien que la pile puisse être différente - s'il y a une incitation que vous pouvez me donner - serait la bienvenue. Le débogage des erreurs AWS S3 est super frustrant - du moins jusqu'à présent. stackoverflow.com/questions/31998827/…
jamie

2

L'utilisation de la chaîne Base64 dans JSON sera très lourde. L'analyseur doit faire beaucoup de travail lourd. Actuellement, Fresco ne prend en charge que les supports de base Base64. Mieux vaut mettre quelque chose sur Amazon Cloud ou Firebase Cloud. Et obtenez une image en tant qu'URL. Pour que vous puissiez utiliser Picasso ou Glide pour la mise en cache.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.