Firebase-Speicher Speichern und Abrufen von Bildern [geschlossen]


266

Wie speichere und zeige ich Bilder auf Firebase?


1
Das ist cool, wenn ich Bilder mit Firebase speichere, kann ich Firebase-Logins für die Sicherheit verwenden
Mrwaim

6
Seit gestern hat Firebase eine neue Funktion namens Firebase Storage (firebase.google.com/docs/storage) veröffentlicht, mit der Sie beliebige Dateien (Bilder, Videos, Audio usw.) hochladen und herunterladen können. Es wird von Google Cloud Storage (cloud.google.com/storage) für Petabyte-Skalierung und wettbewerbsfähigen Preis unterstützt. Sie sollten dies auf jeden Fall überprüfen :)
Mike McDonald

16
Benutzer finden es nützlich, warum es geschlossen?
Amr Lotfy

7
@TinyGiant Hier wird nicht um eine Empfehlung gebeten. Warum sollte sie als solche geschlossen werden? Es wird nach einer Funktion eines Softwaredienstes gefragt - vollständig zum Thema.

1
Ich hasse vorzeitige geschlossene Kommentare. einfache Fragen sollten nicht aus Liebe zu Gott geschlossen werden!
Jeryl Cook

Antworten:


275

Update (20160519) : Firebase hat gerade eine neue Funktion namens Firebase Storage veröffentlicht . Auf diese Weise können Sie Bilder und andere Nicht-JSON-Daten auf einen dedizierten Speicherdienst hochladen. Es wird dringend empfohlen, dies zum Speichern von Bildern zu verwenden, anstatt sie als base64-codierte Daten in der JSON-Datenbank zu speichern.

Das kannst du sicher! Je nachdem, wie groß Ihre Bilder sind, haben Sie mehrere Möglichkeiten:

1. Für kleinere Bilder (unter 10 MB)

Wir haben hier ein Beispielprojekt, das dies tut: https://github.com/firebase/firepano

Der allgemeine Ansatz besteht darin, die Datei lokal zu laden (mithilfe von FileReader), damit Sie sie dann wie alle anderen Daten in Firebase speichern können. Da es sich bei Bildern um Binärdateien handelt, sollten Sie den Base64-codierten Inhalt abrufen, damit Sie ihn als Zeichenfolge speichern können. Oder noch praktischer: Sie können es als Daten speichern : URL, die dann als src eines img-Tags eingefügt werden kann (wie im Beispiel dargestellt)!

2. Für größere Bilder

Firebase hat ein Limit von 10 MB (von utf8-codierten Zeichenfolgendaten). Wenn Ihr Bild größer ist, müssen Sie es in 10-MB-Blöcke aufteilen. Sie haben jedoch Recht, dass Firebase eher für kleine Zeichenfolgen optimiert ist, die sich häufig ändern, als für Zeichenfolgen mit mehreren Megabyte. Wenn Sie viele große statische Daten haben, würde ich auf jeden Fall S3 oder ein CDN empfehlen.


2
Das ist großartig. Haben Sie jemals eine Dateigrößenbeschränkung festgestellt? Ich glaube nicht, dass Firebase mit Multi-Megabyte-Zeichenfolgen erstellt wurde ...
MasterScrat

8
Firebase hat ein Limit von 10 MB (von utf8-codierten Zeichenfolgendaten). Wenn Ihr Bild größer ist, müssen Sie es in 10-MB-Blöcke aufteilen. Sie haben jedoch Recht, dass Firebase eher für kleine Zeichenfolgen optimiert ist, die sich häufig ändern, als für Zeichenfolgen mit mehreren Megabyte. Wenn Sie viele große statische Daten haben, würde ich auf jeden Fall S3 oder ein CDN empfehlen.
Michael Lehenbauer

14
Firebase muss seinem Hosting-System oder einer s3-Instanz mit in ihre Bibliotheken integrierten APIs wirklich größeren Speicher hinzufügen.
The_Brink

9
@The_Brink Danke für das Feedback. Dies ist definitiv auf unserem Radar!
Michael Lehenbauer

4
@ezain Das stimmt. Ich würde diesen Ansatz wahrscheinlich nicht für große Produktionsstätten empfehlen (Sie möchten wirklich einen CDN-gestützten Image-Serving-Service), aber er ist einfach und "gut genug" für viele Anwendungen.
Michael Lehenbauer

25

Ja, Sie können Bilder in Firebase speichern und anzeigen. Sie können einen Dateipicker verwenden, um die Bilddatei abzurufen. Dann können Sie das Bild hosten, wie Sie möchten, ich bevorzuge Amazon S3. Sobald das Bild gehostet ist, können Sie das Bild unter Verwendung der für das Bild generierten URL anzeigen.

Hoffe das hilft.


3
Schauen Sie sich dazu die aktualisierten Firbase-Dokumente an: firebase.google.com/docs/storage/#key_functions
Lukas Liesis

Wenn Sie das Bild auf Amazon hosten möchten, speichern Sie es stattdessen in Firebase Storage .
Ojonugwa Jude Ochalifu

19

Am Ende habe ich die Bilder selbst im Base64-Format gespeichert. Ich übersetze sie von ihrem base64-Wert, wenn sie von firebase zurückgerufen werden.


1
Das einzige Problem bei diesem Ansatz ist, dass wenn die Bilder groß sind, das Verschieben über Aktivitäten die App verlangsamt und in einigen Fällen abstürzt
Ojonugwa Jude Ochalifu

10

Sie können auch einen Dienst namens verwenden, Filepickerder Ihr Bild auf ihren Servern speichert, und Filepicker, der jetzt Filestack heißt, gibt Ihnen eine URL zum Bild. Sie können die URL dann in Firebase speichern.


Ich habe diesen Service aus Ihrem Kommentar gesehen, den ich ausprobiert habe, aber nicht sehr glücklich darüber.
Bpolat

3

Es gibt verschiedene Möglichkeiten, wie ich es zuerst getan habe, wie es Grendal2501 getan hat. Ich habe es dann ähnlich wie bei user15163 gemacht. Sie können die Bild-URL in der Firebase speichern und das Image auf Ihrem Firebase-Host oder auch auf Amazon S3 hosten.


403 Fehler beim Einfügen und Rendern von Bildern - Berechtigungsprobleme mit hochgeladenen Bildern - Informationen zum Einrichten des Uploads. Ich habe versucht, acl: 'public-read' zu verwenden - aber dann schlägt der Upload mit einem 403 fehl. Jedes Info-Richtliniendokument und jede Bucket-Richtlinie, die helfen könnten, wäre großartig. AWS - Dokumentation ist schwierig und es gibt keine Debugging-Informationen mit anderen Fehlern als dem Zugriff verweigert.
Jamie

2
Stellen Sie dies als eine andere Frage
Jakob Hartman

faire Idee :) fertig - obwohl der Stapel anders sein kann - wenn es einen Anreiz gibt, den Sie mir geben können - wäre willkommen. Das Debuggen von AWS S3-Fehlern ist - zumindest bisher - sehr frustrierend. stackoverflow.com/questions/31998827/…
Jamie

2

Die Verwendung von Base64-Zeichenfolgen in JSON ist sehr umfangreich. Der Parser muss viel schweres Heben tun. Derzeit unterstützt Fresco nur Base-Unterstützung Base64. Besser Sie setzen etwas auf Amazon Cloud oder Firebase Cloud. Und ein Bild als URL erhalten. Damit können Sie Picasso oder Glide zum Zwischenspeichern verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.