Buat referensi Cloud Storage di Flutter

File Anda disimpan di bucket Cloud Storage . File dalam bucket ini disajikan dalam struktur hierarkis, seperti sistem file di hard disk lokal Anda, atau data di Firebase Realtime Database. Dengan membuat referensi ke file, aplikasi Anda mendapatkan akses ke sana. Referensi ini kemudian dapat digunakan untuk mengunggah atau mengunduh data, mendapatkan atau memperbarui metadata, atau menghapus file. Referensi dapat menunjuk ke file tertentu atau ke node tingkat yang lebih tinggi dalam hierarki.

Jika Anda telah menggunakan Firebase Realtime Database , jalur ini akan tampak sangat familier bagi Anda. Namun, data file Anda disimpan di Cloud Storage, bukan di Realtime Database.

Buat Referensi

Buat referensi untuk mengunggah, mengunduh, atau menghapus file, atau untuk mendapatkan atau memperbarui metadatanya. Referensi dapat dianggap sebagai penunjuk ke file di cloud. Referensinya ringan, sehingga Anda dapat membuat sebanyak yang Anda butuhkan. Mereka juga dapat digunakan kembali untuk beberapa operasi.

Buat referensi menggunakan instance tunggal FirebaseStorage dan panggil metode ref() -nya.

final storageRef = FirebaseStorage.instance.ref();

Selanjutnya, Anda dapat membuat referensi ke lokasi yang lebih rendah di pohon, misalnya "images/space.jpg" dengan menggunakan metode child() pada referensi yang ada.

// Create a child reference
// imagesRef now points to "images"
final imagesRef = storageRef.child("images");

// Child references can also take paths
// spaceRef now points to "images/space.jpg
// imagesRef still points to "images"
final spaceRef = storageRef.child("images/space.jpg");

Anda juga dapat menggunakan properti parent dan root untuk menavigasi ke atas dalam hierarki file kami. parent menavigasi ke atas satu tingkat, sementara root menavigasi sampai ke atas.

// parent allows us to move our reference to a parent node
// imagesRef2 now points to 'images'
final imagesRef2 = spaceRef.parent;

// root allows us to move all the way back to the top of our bucket
// rootRef now points to the root
final rootRef = spaceRef.root;

child() , parent , dan root dapat dirangkai bersama beberapa kali, karena masing-masing adalah referensi. Tetapi mengakses root.parent menghasilkan null .

// References can be chained together multiple times
// earthRef points to 'images/earth.jpg'
final earthRef = spaceRef.parent?.child("earth.jpg");

// nullRef is null, since the parent of root is null
final nullRef = spaceRef.root.parent;

Properti Referensi

Anda dapat memeriksa referensi untuk lebih memahami file yang ditunjuknya menggunakan properti fullPath , name , dan bucket . Properti ini mendapatkan path lengkap, nama, dan bucket file.

// Reference's path is: "images/space.jpg"
// This is analogous to a file path on disk
spaceRef.fullPath;

// Reference's name is the last segment of the full path: "space.jpg"
// This is analogous to the file name
spaceRef.name;

// Reference's bucket is the name of the storage bucket that the files are stored in
spaceRef.bucket;

Batasan Referensi

Jalur dan nama referensi dapat berisi urutan karakter Unicode yang valid, tetapi batasan tertentu diberlakukan termasuk:

  1. Panjang total reference.fullPath harus antara 1 dan 1024 byte saat UTF-8 dikodekan.
  2. Tidak ada karakter Carriage Return atau Line Feed.
  3. Hindari penggunaan # , [ , ] , * , atau ? , karena ini tidak berfungsi dengan baik dengan alat lain seperti Firebase Realtime Database atau gsutil .

Contoh Lengkap

// Points to the root reference
final storageRef = FirebaseStorage.instance.ref();

// Points to "images"
Reference? imagesRef = storageRef.child("images");

// Points to "images/space.jpg"
// Note that you can use variables to create child values
final fileName = "space.jpg";
final spaceRef = imagesRef.child(fileName);

// File path is "images/space.jpg"
final path = spaceRef.fullPath;

// File name is "space.jpg"
final name = spaceRef.name;

// Points to "images"
imagesRef = spaceRef.parent;

Selanjutnya, mari kita pelajari cara mengunggah file ke Cloud Storage.