Penyimpanan Firebase Cara menyimpan dan Mengambil gambar [ditutup]

269

Bagaimana cara menyimpan dan melihat gambar di firebase?

dogger
sumber
1
Ini keren, jika saya menyimpan gambar menggunakan firebase, saya bisa menggunakan login firebase untuk keamanan
mrwaim
6
Sampai kemarin, Firebase merilis fitur baru, yang disebut Firebase Storage (firebase.google.com/docs/storage), yang memungkinkan Anda untuk mengunggah dan mengunduh file sewenang-wenang (gambar, video, audio, dll.). Ini didukung oleh Google Cloud Storage (cloud.google.com/storage) untuk skala petabyte dan harga yang kompetitif. Anda pasti harus memeriksanya :)
Mike McDonald
16
Pengguna merasa bermanfaat, mengapa menutupnya?
Amr Lotfy
7
@TinyGiant Ini bukan meminta rekomendasi, jadi mengapa ditutup seperti itu? Ini menanyakan tentang fitur layanan perangkat lunak - sepenuhnya pada topik.
2
saya benci komentar tertutup prematur. pertanyaan lurus ke depan tidak boleh ditutup untuk cinta tuhan!
Jeryl Cook

Jawaban:

277

Pembaruan (20160519) : Firebase baru saja merilis fitur baru bernama Firebase Storage . Ini memungkinkan Anda untuk mengunggah gambar dan data non-JSON lainnya ke layanan penyimpanan khusus. Kami sangat menyarankan Anda menggunakan ini untuk menyimpan gambar, alih-alih menyimpannya sebagai data yang disandikan base64 dalam database JSON.

Anda pasti bisa! Bergantung pada seberapa besar gambar Anda, Anda memiliki beberapa opsi:

1. Untuk gambar yang lebih kecil (di bawah 10mb)

Kami memiliki contoh proyek yang melakukannya di sini: https://github.com/firebase/firepano

Pendekatan umum adalah memuat file secara lokal (menggunakan FileReader) sehingga Anda kemudian dapat menyimpannya di Firebase seperti halnya Anda menggunakan data lain. Karena gambar adalah file biner, Anda akan ingin mendapatkan konten yang disandikan base64 sehingga Anda dapat menyimpannya sebagai string. Atau bahkan lebih nyaman, Anda dapat menyimpannya sebagai data: url yang kemudian siap untuk dimasukkan sebagai src dari tag img (inilah contohnya)!

2. Untuk gambar yang lebih besar

Firebase memang memiliki batas 10mb (data string yang dikodekan utf8). Jika gambar Anda lebih besar, Anda harus memecahnya menjadi potongan 10mb. Anda benar bahwa Firebase lebih dioptimalkan untuk string kecil yang sering berubah daripada string multi-megabyte. Jika Anda memiliki banyak data statis besar, saya pasti akan merekomendasikan S3 atau CDN sebagai gantinya.

Michael Lehenbauer
sumber
2
Itu luar biasa. Apakah Anda pernah mengalami batasan ukuran file? Saya tidak berpikir Firebase dibuat dengan string multi-megabita dalam pikiran ...
MasterScrat
8
Firebase memang memiliki batas 10mb (data string yang dikodekan utf8). Jika gambar Anda lebih besar, Anda harus memecahnya menjadi potongan 10mb. Anda benar bahwa Firebase lebih dioptimalkan untuk string kecil yang sering berubah daripada string multi-megabyte. Jika Anda memiliki banyak data statis besar, saya pasti akan merekomendasikan S3 atau CDN sebagai gantinya.
Michael Lehenbauer
14
Firebase benar-benar perlu menambahkan penyimpanan yang lebih besar ke sistem hosting mereka, atau instance s3 dengan apis yang dibangun di perpustakaan mereka.
The_Brink
9
@The_Brink Terima kasih atas umpan baliknya. Ini pasti ada di radar kami!
Michael Lehenbauer
4
@ Jeanain Itu benar. Saya mungkin tidak akan merekomendasikan pendekatan ini untuk situs produksi besar (Anda benar-benar menginginkan layanan penyajian gambar yang didukung CDN), tetapi mudah dan "cukup baik" untuk banyak penggunaan.
Michael Lehenbauer
25

Ya, Anda dapat menyimpan dan melihat gambar di Firebase. Anda dapat menggunakan filepicker untuk mendapatkan file gambar. Maka Anda dapat meng-host gambar sesuka Anda, saya lebih suka Amazon s3. Setelah gambar di-host, Anda dapat menampilkan gambar menggunakan URL yang dihasilkan untuk gambar.

Semoga ini membantu.

pengguna15163
sumber
3
Lihat dokumen firbase yang diperbarui untuk ini: firebase.google.com/docs/storage/#key_functions
Lukas Liesis
Jika Anda akan meng-host gambar di amazon, mengapa tidak menyimpannya di Firebase Storage saja?
Ojonugwa Jude Ochalifu
19

Saya akhirnya menyimpan gambar dalam format base64 sendiri. Saya menerjemahkannya dari nilai base64 mereka ketika dipanggil kembali dari firebase.

Grendel2501
sumber
1
Satu-satunya masalah dengan pendekatan ini adalah ketika gambar besar, memindahkannya melintasi aktivitas membuat aplikasi menjadi lambat dan dalam beberapa kasus macet
Ojonugwa Jude Ochalifu
10

Anda juga dapat menggunakan layanan yang disebut Filepickeryang akan menyimpan gambar Anda ke server mereka dan Filepicker yang sekarang disebut Filestack, akan memberi Anda url ke gambar. Anda dapat menyimpan url ke Firebase.

Felice
sumber
saya melihat layanan ini dari komentar Anda, saya mencoba tetapi tidak terlalu senang tentang hal itu.
bpolat
3

Ada beberapa cara melakukan yang pertama kali saya lakukan dengan cara Grendal2501. Saya kemudian melakukannya mirip dengan user15163, Anda dapat menyimpan URL gambar di firebase dan meng-host gambar di host firebase Anda atau juga Amazon S3;

Jakob Hartman
sumber
403 kesalahan saat mencoba memasukkan dan membuat gambar - memiliki masalah izin dengan gambar yang diunggah - info apa pun tentang cara Anda mengatur unggahan. Saya mencoba menggunakan acl: 'baca-publik' - tetapi kemudian unggahan gagal -dengan 403. Setiap kebijakan info kebijakan dan kebijakan ember yang dapat membantu - akan sangat bagus. AWS - dokumentasi sulit dan tidak ada informasi debug dengan kesalahan selain akses ditolak.
jamie
2
Ajukan ini sebagai pertanyaan lain
Jakob Hartman
ide yang adil :) dilakukan - meskipun tumpukan mungkin berbeda - jika ada hasutan yang dapat Anda berikan kepada saya - akan diterima. Debugging kesalahan AWS S3 sangat membuat frustrasi - setidaknya sejauh ini. stackoverflow.com/questions/31998827/…
jamie
2

Menggunakan string Base64 di JSON akan sangat berat. Parser harus melakukan banyak pengangkatan berat. Saat ini, Fresco hanya mendukung basis yang mendukung Base64. Lebih baik Anda meletakkan sesuatu di Amazon Cloud atau Firebase Cloud. Dan dapatkan gambar sebagai URL. Sehingga Anda bisa menggunakan Picasso atau Glide untuk caching.

Asthme
sumber