Aku sedang bekerja pada gambar upload, semua karya besar, tetapi saya memiliki 100 gambar dan saya ingin menunjukkan semua dari mereka di saya View
, karena saya mendapatkan daftar lengkap gambar dalam folder, saya tidak dapat menemukan API untuk ini kerja.
firebase
firebase-storage
Luis Ruiz Figueroa
sumber
sumber
Jawaban:
Sejak Firebase SDK untuk JavaScript rilis 6.1 , iOS rilis 6.4 , dan Android versi rilis 18.1 semuanya memiliki metode untuk mencantumkan file.
The dokumentasi agak jarang sejauh ini, jadi saya sarankan memeriksa jawaban Rosário ini untuk rincian.
Jawaban sebelumnya, karena pendekatan ini terkadang masih berguna:
Saat ini tidak ada panggilan API di SDK Firebase untuk mencantumkan semua file di folder Cloud Storage dari dalam aplikasi. Jika Anda memerlukan fungsionalitas seperti itu, Anda harus menyimpan metadata file (seperti URL unduhan) di tempat Anda dapat mencantumkannya. The Firebase Realtime database dan Cloud Firestore yang sempurna untuk ini dan memungkinkan Anda untuk juga mudah berbagi URL dengan orang lain.
Anda dapat menemukan contoh yang bagus (tapi agak terlibat) dari ini di aplikasi contoh FriendlyPix kami . Kode yang relevan untuk versi web ada di sini , tetapi ada juga versi untuk iOS dan Android.
sumber
Mulai Mei 2019, Firebase SDK untuk Cloud Storage versi 6.1.0 sekarang mendukung pencantuman semua objek dari sebuah keranjang. Anda hanya perlu menelepon
listAll()
dalamReference
:Harap diperhatikan bahwa untuk menggunakan fungsi ini, Anda harus ikut serta dalam Aturan Keamanan versi 2 , yang dapat dilakukan dengan membuat
rules_version = '2';
baris pertama aturan keamanan Anda:Saya akan merekomendasikan untuk memeriksa dokumen untuk referensi lebih lanjut.
Juga, menurut penyiapan , pada Langkah 5, skrip ini tidak diizinkan
Node.js
karenarequire("firebase/app");
tidak akan kembalifirebase.storage()
sebagai fungsi. Ini hanya bisa dicapai dengan menggunakanimport * as firebase from 'firebase/app';
.sumber
Sejak Mar 2017: Dengan penambahan Firebase Cloud Functions , dan integrasi Firebase yang lebih dalam dengan Google Cloud, hal ini sekarang dimungkinkan.
Dengan Cloud Functions, Anda dapat menggunakan paket Google Cloud Node untuk melakukan operasi epik di Cloud Storage. Di bawah ini adalah contoh yang memasukkan semua URL file ke dalam array dari Cloud Storage. Fungsi ini akan dipicu setiap kali ada sesuatu yang disimpan ke penyimpanan cloud google.
Catatan 1 : Ini adalah operasi komputasi yang mahal, karena harus menggilir semua file dalam keranjang / folder.
Catatan 2 : Saya menulis ini hanya sebagai contoh, tanpa memberikan banyak detail ke dalam promise, dll. Hanya untuk memberi gambaran.
Saya harap ini akan memberi Anda gambaran umum. Untuk contoh fungsi cloud yang lebih baik, lihat repo Github Google yang lengkap dengan sampel Cloud Functions untuk Firebase . Lihat juga Dokumentasi API Google Cloud Node mereka
sumber
.then
seperti ini:this.bucket .getFiles({ prefix: 'path/to/directory' }) .then((arr) => {})
Karena tidak ada bahasa yang terdaftar, saya akan menjawab ini di Swift. Kami sangat merekomendasikan menggunakan Firebase Storage dan Firebase Realtime Database secara bersamaan untuk menyelesaikan daftar download:
Bersama:
Unggah:
Unduh:
Untuk informasi selengkapnya, lihat Zero to App: Develop with Firebase , dan kode sumbernya yang terkait , untuk contoh praktis tentang cara melakukannya.
sumber
Solusinya adalah dengan membuat file (yaitu list.txt) tanpa isi di dalamnya, di file ini Anda dapat mengatur metadata kustom (yaitu Peta <String, String>) dengan daftar semua URL file.
Jadi, jika Anda perlu men-download semua file di fodler, Anda terlebih dahulu mengunduh metadata dari file list.txt, lalu Anda mengulang melalui data khusus dan mengunduh semua file dengan URL di Peta.
sumber
Saya juga mengalami masalah ini saat mengerjakan proyek saya. Saya sangat berharap mereka memberikan metode api akhir. Bagaimanapun, ini adalah cara saya melakukannya: Saat Anda mengupload gambar ke penyimpanan Firebase, buat Objek dan teruskan objek ini ke database Firebase pada saat yang bersamaan. Objek ini berisi URI unduhan gambar.
Nanti saat Anda ingin mendownload gambar dari folder, Anda cukup melakukan iterasi melalui file di bawah folder itu. Folder ini memiliki nama yang sama dengan "folder" di penyimpanan Firebase, tetapi Anda dapat menamainya sesuka Anda. Saya menempatkannya di utas terpisah.
Sekarang saya memiliki daftar objek yang berisi URI untuk setiap gambar, saya dapat melakukan apa pun yang ingin saya lakukan dengannya. Untuk memuatnya ke imageView, saya membuat utas lain.
Ini mengembalikan daftar Bitmap, ketika selesai saya cukup melampirkannya ke ImageView di aktivitas utama. Metode di bawah ini adalah @Override karena saya memiliki antarmuka yang dibuat dan mendengarkan penyelesaian di utas lain.
Perhatikan bahwa saya harus menunggu List Image dikembalikan terlebih dahulu dan kemudian memanggil utas untuk bekerja pada List Bitmap. Dalam hal ini, Gambar berisi URI.
Semoga seseorang merasa terbantu. Itu juga akan berfungsi sebagai garis serikat untuk diriku sendiri di masa depan juga.
sumber
Satu cara lagi untuk menambahkan gambar ke Database menggunakan Cloud Function untuk melacak setiap gambar yang diupload dan menyimpannya di Database.
Kode lengkap di sini: https://gist.github.com/bossly/fb03686f2cb1699c2717a0359880cf84
sumber
Untuk node js, saya menggunakan kode ini
sumber
Anda bisa mencantumkan file dalam direktori penyimpanan firebase dengan metode listAll (). Untuk menggunakan metode ini, Anda harus menerapkan versi penyimpanan firebase ini. 'com.google.firebase: firebase-storage: 18.1.1'
https://firebase.google.com/docs/storage/android/list-files
Ingatlah bahwa meningkatkan Aturan Keamanan ke versi 2.
sumber
Sebenarnya hal ini dimungkinkan, tetapi hanya dengan Google Cloud API, bukan dari Firebase. Itu karena Firebase Storage adalah Google Cloud Storage Bucket yang dapat dijangkau dengan mudah dengan Google Cloud API, namun Anda perlu menggunakan OAuth untuk Autentikasi, bukan Firebase.
sumber
Saya menghadapi masalah yang sama, masalah saya bahkan lebih rumit.
Admin akan mengunggah file audio dan pdf ke dalam penyimpanan:
file audio / season1, season2 ... / class1, class 2 / .mp3
buku / file .pdf
Aplikasi Android perlu mendapatkan daftar sub folder dan file.
Solusinya adalah menangkap peristiwa unggahan di penyimpanan dan membuat struktur yang sama di firestore menggunakan fungsi cloud.
Langkah 1: Buat koleksi 'penyimpanan' dan dokumen 'audio / buku' secara manual di firestore
Langkah 2: Siapkan fungsi cloud
Mungkin memakan waktu sekitar 15 menit: https://www.youtube.com/watch?v=DYfP-UIKxH0&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM&index=1
Langkah 3: Tangkap acara unggahan menggunakan fungsi cloud
Langkah 4: Ambil daftar folder / file di aplikasi Android menggunakan firestore
Langkah 5: Dapatkan url unduhan
Catatan
Kita harus meletakkan "sub" koleksi untuk setiap item karena firestore tidak mendukung untuk mengambil daftar koleksi.
Saya butuh 3 hari untuk menemukan solusinya, semoga akan memakan waktu paling banyak 3 jam.
Bersulang.
sumber
Memperluas jawaban Rosário Pereira Fernandes , untuk solusi JavaScript:
JavaScript
sebagai bahasa defaultfunctions / package.json
listAll
fungsiindex.js
images.js
firebase deploy
untuk mengunggah fungsi cloud Andabuild.gradle
kelas kotlin
Mengenai pengembangan lebih lanjut dari fitur ini, saya mengalami beberapa masalah yang mungkin ditemukan di sini .
sumber
Untuk melakukan ini dengan JS
Anda dapat menambahkannya langsung ke penampung div Anda, atau Anda dapat mendorongnya ke array. Di bawah ini menunjukkan cara menambahkannya ke div Anda.
1) Saat Anda menyimpan gambar di penyimpanan, buat referensi ke gambar di database firebase Anda dengan struktur berikut
2) Ketika Anda memuat dokumen Anda menarik semua URL sumber gambar Anda dari database daripada penyimpanan dengan kode berikut
sumber
Anda dapat menggunakan kode berikut. Di sini saya mengunggah gambar ke penyimpanan firebase dan kemudian saya menyimpan url unduhan gambar ke basis data firebase.
Sekarang untuk mengambil semua gambar yang disimpan dalam database firebase yang dapat Anda gunakan
Untuk lebih jelasnya kamu bisa lihat postingan saya Contoh Firebase Storage .
sumber
Jadi saya memiliki proyek yang memerlukan pengunduhan aset dari penyimpanan firebase, jadi saya harus menyelesaikan masalah ini sendiri. Begini Caranya:
1- Pertama buat model data misalnya
class Choice{}
, di kelas tersebut tentukan variabel String yang disebut image Name sehingga akan seperti itu2- Dari database / database firebase, pergi dan hardcode nama gambar ke objek, jadi jika Anda memiliki nama gambar yang disebut Apple.png, buat objek menjadi
3- Sekarang, dapatkan tautan untuk aset di penyimpanan firebase Anda yang akan seperti itu
Seperti yang ini
4- terakhir, inisialisasi referensi penyimpanan firebase Anda dan mulai dapatkan file secara berulang seperti itu
5- itu saja
sumber
sumber
Saya menggunakan
AngularFire
dan menggunakan yang berikut ini untuk mendapatkan semuadownloadURL
sumber
Untuk Android, praktik terbaiknya adalah menggunakan FirebaseUI dan Glide.
Anda perlu menambahkannya di gradle / aplikasi Anda untuk mendapatkan perpustakaan. Perhatikan bahwa itu sudah memiliki Glide di atasnya!
Dan kemudian gunakan kode Anda
sumber