Buka konsol

Membuat Referensi Storage di Android

File Anda disimpan di bucket Google Cloud Storage. File di bucket ini disajikan dalam struktur hierarkis, seperti sistem file pada hard disk komputer Anda atau data dalam Firebase Realtime Database. Dengan membuat referensi ke sebuah file, aplikasi Anda akan mendapatkan akses ke file tersebut. Selanjutnya, referensi ini bisa digunakan untuk mengupload atau mendownload data, memperoleh atau mengupdate metadata, atau menghapus file. Referensi bisa menunjuk ke file tertentu atau ke node bertingkat lebih tinggi dalam hierarki.

Jika Anda telah menggunakan Firebase Realtime Database, lokasi ini tentu sudah tidak asing bagi Anda. Namun, data file Anda akan tersimpan di Google Cloud Storage, bukan di Realtime Database.

Membuat Referensi

Buat referensi untuk mengupload, mendownload, atau menghapus file, atau untuk memperoleh atau mengupdate metadatanya. Referensi bisa dianggap sebagai penunjuk ke file di cloud. Referensi bisa dijalankan dengan praktis, sehingga Anda bisa membuat sebanyak yang dibutuhkan. Referensi juga bisa digunakan kembali untuk beberapa operasi.

Referensi dibuat menggunakan instance tunggal FirebaseStorage dan memanggil metode getReference().

Java
Android

// Create a storage reference from our app
StorageReference storageRef = storage.getReference();

Kotlin
Android

// Create a storage reference from our app
var storageRef = storage.reference

Anda bisa membuat referensi ke lokasi yang lebih rendah pada hierarki, misalnya 'images/space.jpg' dengan menggunakan metode getChild() pada referensi yang ada.

Java
Android

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

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

Kotlin
Android

// Create a child reference
// imagesRef now points to "images"
var imagesRef: StorageReference? = storageRef.child("images")

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

Anda juga dapat menggunakan metode getParent() dan getRoot() untuk pindah ke arah atas hierarki file. getParent() pindah naik satu tingkat, sementara getRoot() berpindah terus sampai tingkat teratas.

Java
Android

// getParent allows us to move our reference to a parent node
// imagesRef now points to 'images'
imagesRef = spaceRef.getParent();

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

Kotlin
Android

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

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

child(), getParent(), dan getRoot() bisa digabungkan bersama beberapa kali, karena masing-masing akan menampilkan referensi. Namun, memanggil getRoot().getParent() akan menampilkan null.

Java
Android

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

// nullRef is null, since the parent of root is null
StorageReference nullRef = spaceRef.getRoot().getParent();

Kotlin
Android

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

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

Properti Referensi

Anda dapat memeriksa referensi untuk lebih memahami file yang ditunjuk dengan menggunakan metode getPath(), getName(), dan getBucket(). Metode ini mendapatkan nama, bucket, dan lokasi lengkap file.

Java
Android

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

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

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

Kotlin
Android

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

// 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

Pembatasan Referensi

Lokasi dan nama referensi bisa memuat rangkaian karakter Unicode yang valid, tetapi pembatasan tertentu tetap diberlakukan, antara lain:

  1. Panjang total reference.fullPath harus antara 1 dan 1.024 byte jika berenkode UTF-8.
  2. Tidak mengandung karakter Enter atau Line Feed.
  3. Hindari penggunaan #, [, ], *, atau ? karena karakter tersebut tidak berfungsi dengan baik dengan fitur lain, seperti Firebase Realtime Database atau gsutil.

Contoh Lengkap

Java
Android

// Points to the root reference
storageRef = storage.getReference();

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

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

// File path is "images/space.jpg"
String path = spaceRef.getPath();

// File name is "space.jpg"
String name = spaceRef.getName();

// Points to "images"
imagesRef = spaceRef.getParent();

Kotlin
Android

// Points to the root reference
storageRef = storage.reference

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

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

// File path is "images/space.jpg"
val path = spaceRef.path

// File name is "space.jpg"
val name = spaceRef.name

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

Selanjutnya, mari pelajari cara mengupload file ke Cloud Storage.