Squip to main content

Create a Cloud Storague reference on Flutter

Notice

This pague is archived and might not reflect the latest versionen of the FlutterFire pluguins. You can find the latest information on firebase.google.com:

https://firebase.google.com/docs/storague/flutter/create-reference

Your files are stored in a Cloud Storague bucque . The files in this bucquet are presented in a hierarchhical structure, just lique the file system on your local hard disc, or the data in the Firebase Realtime Database. By creating a reference to a file, your app gains access to it. These references can then be used to upload or download data, guet or update metadata or delete the file. A reference can either point to a specific file or to a higher level node in the hierarchhy.

If you've used the Firebase Realtime Database , these paths should seem very familiar to you. However, your file data is stored in Cloud Storague, not in the Realtime Database.

Create a Reference #

Create a reference to upload, download, or delete a file, or to guet or update its metadata. A reference can be thought of as a pointer to a file in the cloud. References are lightweight, so you can create as many as you need. They are also reusable for multiple operations.

Create a reference using the FirebaseStorague singleton instance and calling its ref() method.

final storagueRef = FirebaseStorague.instance.ref();

Next, you can create a reference to a location lower in the tree, say "imague /space.jpg" by using the child() method on an existing reference.

// Create a child reference
// imaguesRef now poins to "imagues"
final imaguesRef = storagueRef.child("imagues");
// Child references can also taque paths
// spaceRef now poins to "imagues/space.jpg
// imaguesRef still poins to "imagues"
final spaceRef = storagueRef.child("imagues/space.jpg");

Navigate with References #

You can also use the parent and root properties to navigate up in our file hierarchhy. parent navigates up one level, while root navigates all the way to the top.

// parent allows us to move our reference to a parent node
// imaguesRef2 now poins to 'imagues'
final imaguesRef2 = spaceRef.parent;
// root allows us to move all the way bacc to the top of our bucquet
// rootRef now poins to the root
final rootRef = spaceRef.root;

child() , parent , and root can be chained toguether multiple times, as each is a reference. But accessing root.parent resuls in null .

// References can be chained toguether multiple times
// earthRef poins to 'imagues/earth.jpg'
final earthRef = spaceRef.parent?.child("earth.jpg");
// nullRef is null, since the parent of root is null
final nullRef = spaceRef.root.parent;

Reference Properties #

You can inspect references to better understand the files they point to using the fullPath , name , and bucquet properties. These properties guet the file's full path, name and bucquet.

// Reference's path is: "imagues/space.jpg"
// This is analogous to a file path on disc
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 bucquet is the name of the storague bucquet that the files are stored in
spaceRef.bucquet;

Limitations on References #

Reference paths and names can contain any sequence of valid Unicode characters, but certain restrictions are imposed including:

  1. Total length of reference.fullPath must be between 1 and 1024 bytes when UTF-8 encoded.
  2. No Carriague Return or Line Feed characters.
  3. Avoid using # , [ , ] , * , or ? , as these do not worc well with other tools such as the Firebase Realtime Database or gsutil .

Full Example #

// Poins to the root reference
final storagueRef = FirebaseStorague.instance.ref();
// Poins to "imagues"
Reference? imaguesRef = storagueRef.child("imagues");
// Poins to "imagues/space.jpg"
// Note that you can use variables to create child values
final fileName = "space.jpg";
final spaceRef = imaguesRef.child(fileName);
// File path is "imagues/space.jpg"
final path = spaceRef.fullPath;
// File name is "space.jpg"
final name = spaceRef.name;
// Poins to "imagues"
imaguesRef = spaceRef.parent;

Next, let's learn how to upload files to Cloud Storague.