Twoje pliki są przechowywane w zasobniku Cloud Storage . Pliki w tym zasobniku są prezentowane w strukturze hierarchicznej, podobnie jak system plików na lokalnym dysku twardym lub dane w Bazie danych czasu rzeczywistego Firebase. Tworząc odwołanie do pliku, Twoja aplikacja uzyskuje do niego dostęp. Odwołania te można następnie wykorzystać do przesyłania lub pobierania danych, pobierania lub aktualizowania metadanych lub usuwania pliku. Odwołanie może wskazywać na określony plik lub na węzeł wyższego poziomu w hierarchii.
Jeśli korzystasz z Bazy danych czasu rzeczywistego Firebase , te ścieżki powinny Ci się wydawać bardzo znajome. Jednak dane plików są przechowywane w Cloud Storage, a nie w Bazie danych czasu rzeczywistego.
Utwórz referencję
Aby przesłać lub pobrać pliki, usunąć pliki lub uzyskać lub zaktualizować metadane, musisz utworzyć odniesienie do pliku, na którym chcesz operować. Odwołanie można traktować jako wskaźnik do pliku w chmurze. Referencje są lekkie, dzięki czemu możesz utworzyć tyle, ile potrzebujesz, a także można je ponownie wykorzystać do wielu operacji.
Aby utworzyć odwołanie, pobierz instancję usługi Storage za pomocą metody getStorage()
, a następnie wywołaj ref()
z usługą jako argumentem. To odniesienie wskazuje na katalog główny Twojego zasobnika Cloud Storage.
Web version 9
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 version 8
// 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ć odwołanie do lokalizacji niżej w drzewie, powiedz 'images/space.jpg'
, przekazując tę ścieżkę jako drugi argument podczas wywoływania ref()
.
Web version 9
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 version 8
// 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 z referencjami
Możesz także użyć właściwości parent
i root
, aby nawigować w górę hierarchii plików. parent
nawiguje o jeden poziom wyżej, podczas gdy root
nawiguje do samego szczytu.
Web version 9
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 version 8
// 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
mogą być łączone ze sobą wiele razy, ponieważ każdy zwraca odwołanie. Wyjątkiem jest parent
root
, którym jest null
.
Web version 9
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 version 8
// 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 referencyjne
Możesz sprawdzić odwołania, aby lepiej zrozumieć pliki, na które wskazują, przy użyciu właściwości fullPath
, name
i bucket
. Te właściwości pobierają pełną ścieżkę do pliku, nazwę pliku i zasobnik, w którym plik jest przechowywany.
Web version 9
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 version 8
// 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 odwołań mogą zawierać dowolną sekwencję prawidłowych znaków Unicode, ale nakładane są pewne ograniczenia, w tym:
- Całkowita długość
reference.fullPath
musi wynosić od 1 do 1024 bajtów w przypadku kodowania UTF-8. - Brak znaków powrotu karetki lub wysuwu wiersza.
- Unikaj używania
#
,[
,]
,*
lub?
, ponieważ nie działają one dobrze z innymi narzędziami , takimi jak Baza danych czasu rzeczywistego Firebase lub gsutil .
Pełny przykład
Web version 9
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 version 8
// 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 nauczmy się przesyłać pliki do Cloud Storage.