Twoje pliki są przechowywane w zasobniku Cloud Storage . Pliki w tym zasobniku mają strukturę hierarchiczną, podobnie jak system plików na lokalnym dysku twardym lub dane w bazie danych Firebase Realtime Database. Tworząc odwołanie do pliku, Twoja aplikacja uzyskuje do niego dostęp. Odniesienia te można następnie wykorzystać do przesyłania lub pobierania danych, pobierania lub aktualizowania metadanych lub usuwania pliku. Odniesienie może wskazywać konkretny plik lub węzeł wyższego poziomu w hierarchii.
Jeśli korzystałeś z bazy danych Firebase Realtime Database , te ścieżki powinny wydawać Ci się bardzo znajome. Jednak dane plików są przechowywane w Cloud Storage, a nie w bazie danych czasu rzeczywistego.
Utwórz odniesienie
Aby przesyłać lub pobierać pliki, usuwać pliki lub pobierać lub aktualizować metadane, musisz utworzyć odniesienie do pliku, na którym chcesz operować. Odniesienie można traktować jako wskaźnik do pliku w chmurze. Odniesienia są lekkie, więc możesz utworzyć tyle, ile potrzebujesz, a także można je wielokrotnie wykorzystywać do wielu operacji.
Aby utworzyć referencję, pobierz instancję usługi Storage za pomocą getStorage()
a następnie wywołaj ref()
z usługą jako argumentem. To odniesienie wskazuje na katalog główny Twojego segmentu Cloud Storage.
Web modular API
import { getStorage, ref } from "firebase/storage"; // Get a reference to the storage service, which is used to create references in your storage bucket const storage = getStorage(); // Create a storage reference from our storage service const storageRef = ref(storage);
Web namespaced API
// Get a reference to the storage service, which is used to create references in your storage bucket var storage = firebase.storage(); // Create a storage reference from our storage service var storageRef = storage.ref();
Możesz utworzyć odniesienie do lokalizacji znajdującej się niżej w drzewie, powiedzmy 'images/space.jpg'
przekazując tę ścieżkę jako drugi argument podczas wywoływania ref()
.
Web modular API
import { getStorage, ref } from "firebase/storage"; const storage = getStorage(); // Create a child reference const imagesRef = ref(storage, 'images'); // imagesRef now points to 'images' // Child references can also take paths delimited by '/' const spaceRef = ref(storage, 'images/space.jpg'); // spaceRef now points to "images/space.jpg" // imagesRef still points to "images"
Web namespaced API
// Create a child reference var imagesRef = storageRef.child('images'); // imagesRef now points to 'images' // Child references can also take paths delimited by '/' var spaceRef = storageRef.child('images/space.jpg'); // spaceRef now points to "images/space.jpg" // imagesRef still points to "images"
Nawiguj za pomocą referencji
Możesz także użyć właściwości parent
i root
, aby poruszać się w górę hierarchii plików. parent
przechodzi o jeden poziom wyżej, podczas gdy root
przechodzi aż na samą górę.
Web modular API
import { getStorage, ref } from "firebase/storage"; const storage = getStorage(); const spaceRef = ref(storage, 'images/space.jpg'); // Parent allows us to move to the parent of a reference const imagesRef = spaceRef.parent; // imagesRef now points to 'images' // Root allows us to move all the way back to the top of our bucket const rootRef = spaceRef.root; // rootRef now points to the root
Web namespaced API
// Parent allows us to move to the parent of a reference var imagesRef = spaceRef.parent; // imagesRef now points to 'images' // Root allows us to move all the way back to the top of our bucket var rootRef = spaceRef.root; // rootRef now points to the root
child()
, parent
i root
można łączyć ze sobą wiele razy, ponieważ każde z nich zwraca referencję. Wyjątkiem jest parent
root
, który ma null
.
Web modular API
import { getStorage, ref } from "firebase/storage"; const storage = getStorage(); const spaceRef = ref(storage, 'images/space.jpg'); // References can be chained together multiple times const earthRef = ref(spaceRef.parent, 'earth.jpg'); // earthRef points to 'images/earth.jpg' // nullRef is null, since the parent of root is null const nullRef = spaceRef.root.parent;
Web namespaced API
// References can be chained together multiple times var earthRef = spaceRef.parent.child('earth.jpg'); // earthRef points to 'images/earth.jpg' // nullRef is null, since the parent of root is null var nullRef = spaceRef.root.parent;
Właściwości odniesienia
Możesz sprawdzić odniesienia, aby lepiej zrozumieć pliki, na które wskazują, korzystając z właściwości fullPath
, name
i bucket
. Te właściwości pobierają pełną ścieżkę pliku, nazwę pliku i zasobnik, w którym plik jest przechowywany.
Web modular API
import { getStorage, ref } from "firebase/storage"; const storage = getStorage(); const spaceRef = ref(storage, 'images/space.jpg'); // 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 where files are stored spaceRef.bucket;
Web namespaced API
// 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 where files are stored spaceRef.bucket;
Ograniczenia dotyczące referencji
Ścieżki i nazwy referencyjne mogą zawierać dowolną sekwencję prawidłowych znaków Unicode, ale nakładane są pewne ograniczenia, w tym:
- Całkowita długość
reference.fullPath
musi mieścić się w zakresie od 1 do 1024 bajtów w przypadku kodowania UTF-8. - Brak znaków powrotu karetki i nowego wiersza.
- Unikaj używania
#
,[
,]
,*
lub?
, ponieważ nie działają one dobrze z innymi narzędziami, takimi jak baza danych Firebase Realtime Database lub gsutil .
Pełny przykład
Web modular API
import { getStorage, ref } from "firebase/storage"; const storage = getStorage(); // Points to the root reference const storageRef = ref(storage); // Points to 'images' const imagesRef = ref(storageRef, 'images'); // Points to 'images/space.jpg' // Note that you can use variables to create child values const fileName = 'space.jpg'; const spaceRef = ref(imagesRef, fileName); // File path is 'images/space.jpg' const path = spaceRef.fullPath; // File name is 'space.jpg' const name = spaceRef.name; // Points to 'images' const imagesRefAgain = spaceRef.parent;
Web namespaced API
// Points to the root reference var storageRef = firebase.storage().ref(); // Points to 'images' var imagesRef = storageRef.child('images'); // Points to 'images/space.jpg' // Note that you can use variables to create child values var fileName = 'space.jpg'; var spaceRef = imagesRef.child(fileName); // File path is 'images/space.jpg' var path = spaceRef.fullPath; // File name is 'space.jpg' var name = spaceRef.name; // Points to 'images' var imagesRef = spaceRef.parent;
Następnie dowiedzmy się, jak przesyłać pliki do Cloud Storage.