Firebase Storage Come archiviare e recuperare immagini [chiuso]


269

Come archiviare e visualizzare le immagini su Firebase?


1
Questo è bello, se conservo le immagini usando firebase, posso usare gli accessi firebase per sicurezza
mrwaim

6
A partire da ieri, Firebase ha rilasciato una nuova funzionalità, denominata Firebase Storage (firebase.google.com/docs/storage), che consente di caricare e scaricare file arbitrari (immagini, video, audio, ecc.). È supportato da Google Cloud Storage (cloud.google.com/storage) per dimensioni di petabyte e prezzo competitivo. Dovresti assolutamente dare un'occhiata :)
Mike McDonald,

16
Gli utenti lo trovano utile, perché lo hanno chiuso?
Amr Lotfy,

7
@TinyGiant Questo non richiede una raccomandazione, quindi perché dovrebbe essere chiuso come tale? Sta chiedendo di una funzionalità di un servizio software - completamente in tema.

2
odio i commenti prematuri chiusi. le domande dirette non dovrebbero essere chiuse per amore di Dio!
Jeryl Cook,

Risposte:


277

Aggiornamento (20160519) : Firebase ha appena rilasciato una nuova funzionalità chiamata Firebase Storage . Ciò consente di caricare immagini e altri dati non JSON su un servizio di archiviazione dedicato. Si consiglia vivamente di utilizzarlo per l'archiviazione delle immagini, invece di memorizzarle come dati codificati in base64 nel database JSON.

Certamente puoi! A seconda di quanto sono grandi le tue immagini, hai un paio di opzioni:

1. Per immagini più piccole (meno di 10 MB)

Abbiamo un progetto di esempio che lo fa qui: https://github.com/firebase/firepano

L'approccio generale è caricare il file localmente (utilizzando FileReader) in modo da poterlo archiviare in Firebase proprio come faresti con qualsiasi altro dato. Poiché le immagini sono file binari, ti consigliamo di ottenere i contenuti con codifica base64 in modo da poterli archiviare come stringa. O ancora più conveniente, puoi memorizzarlo come un dato: url che è quindi pronto per essere inserito come src di un tag img (questo è ciò che fa l'esempio)!

2. Per immagini più grandi

Firebase ha un limite di 10mb (di dati stringa codificati in utf8). Se la tua immagine è più grande, dovrai dividerla in blocchi da 10 MB. Hai ragione però che Firebase è più ottimizzato per stringhe di piccole dimensioni che cambiano frequentemente anziché per stringhe multi-megabyte. Se hai molti dati statici di grandi dimensioni, consiglierei sicuramente S3 o un CDN.


2
È fantastico Ti sei mai imbattuto in una limitazione delle dimensioni del file? Non credo che Firebase sia stato creato pensando a stringhe da più megabyte ...
MasterScrat

8
Firebase ha un limite di 10mb (di dati stringa codificati in utf8). Se la tua immagine è più grande, dovrai dividerla in blocchi da 10 MB. Hai ragione però che Firebase è più ottimizzato per stringhe di piccole dimensioni che cambiano frequentemente anziché per stringhe multi-megabyte. Se hai molti dati statici di grandi dimensioni, consiglierei sicuramente S3 o un CDN.
Michael Lehenbauer,

14
Firebase ha davvero bisogno di aggiungere spazio di archiviazione più grande al loro sistema di hosting, o un'istanza s3 con API incorporate nelle loro librerie.
The_Brink

9
@The_Brink Grazie per il feedback. Questo è sicuramente sul nostro radar!
Michael Lehenbauer,

4
@ezain È corretto. Probabilmente non consiglierei questo approccio per siti di produzione di grandi dimensioni (si desidera davvero un servizio di elaborazione di immagini supportato da CDN), ma è facile e "abbastanza buono" per un sacco di utilizzo.
Michael Lehenbauer,

25

Sì, è possibile archiviare e visualizzare immagini in Firebase. È possibile utilizzare un filepicker per ottenere il file di immagine. Quindi puoi ospitare l'immagine come preferisci, preferisco Amazon s3. Una volta ospitata l'immagine, è possibile visualizzare l'immagine utilizzando l'URL generato per l'immagine.

Spero che questo ti aiuti.


3
Consulta i documenti firbase aggiornati per questo: firebase.google.com/docs/storage/#key_functions
Lukas Liesis,

Se hai intenzione di ospitare l'immagine su Amazon, perché non salvarla in Firebase Storage ?
Ojonugwa Jude Ochalifu,

19

Ho finito per memorizzare le immagini nel formato base64 me stesso. Le traduco dal loro valore base64 quando richiamate da firebase.


1
L'unico problema con questo approccio è che quando le immagini sono grandi, spostarle tra le attività rallenta l'app e in alcuni casi si blocca
Ojonugwa Jude Ochalifu,

10

Puoi anche usare un servizio chiamato Filepickerche memorizzerà la tua immagine sui loro server e Filepicker che ora è chiamato Filestack, ti ​​fornirà un URL all'immagine. Puoi quindi archiviare l'URL su Firebase.


ho visto questo servizio dal tuo commento che ho provato ma non molto contento.
bpolat,

3

Ci sono un paio di modi di fare che ho fatto per la prima volta come Grendal2501. L'ho fatto in modo simile all'utente 15163, è possibile archiviare l'URL dell'immagine nella base del fuoco e ospitare l'immagine sull'host della base del fuoco o anche Amazon S3;


Errore 403 durante il tentativo di inserire e visualizzare immagini - problemi di autorizzazione con le immagini una volta caricate - qualsiasi informazione su come impostare il caricamento. Ho provato ad usare acl: 'public-read' - ma poi il caricamento fallisce -con un 403. Qualsiasi documento di politica informativa e politica del secchio che potrebbe aiutare - sarebbe fantastico. AWS: la documentazione è difficile e non vi sono informazioni di debug con errori diversi dall'accesso negato.
Jamie,

2
Poni questa domanda come un'altra domanda
Jakob Hartman,

buona idea :) fatto - anche se lo stack può essere diverso - se c'è un incitamento che mi puoi dare - sarebbe il benvenuto. Il debug degli errori di AWS S3 è super frustrante, almeno finora. stackoverflow.com/questions/31998827/…
jamie

2

L'uso della stringa Base64 in JSON sarà molto pesante. Il parser deve fare molto lavoro pesante. Attualmente, Fresco supporta solo supporti di base Base64. Meglio mettere qualcosa su Amazon Cloud o Firebase Cloud. E ottieni un'immagine come URL. In modo da poter utilizzare Picasso o Glide per la memorizzazione nella cache.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.