Po przesłaniu pliku do Cloud Storagepliku referencyjnego możesz też pobrać lub zaktualizować metadane pliku, np. aby zmienić typ treści. Pliki mogą też przechowywać niestandardowe pary klucz/wartość z dodatkowymi metadanymi pliku.
Pobieranie metadanych pliku
Metadane pliku zawierają typowe właściwości, takie jak name
, size
i contentType
(często określane jako typ MIME), a także mniej popularne, np. contentDisposition
i timeCreated
. Te metadane można pobrać z Cloud Storage pliku referencyjnego za pomocą metody getMetadata()
. Funkcja getMetadata()
zwraca obiekt Promise
zawierający pełne metadane lub błąd, jeśli obiekt Promise
zostanie odrzucony.
Web
import { getStorage, ref, getMetadata } from "firebase/storage"; // Create a reference to the file whose metadata we want to retrieve const storage = getStorage(); const forestRef = ref(storage, 'images/forest.jpg'); // Get metadata properties getMetadata(forestRef) .then((metadata) => { // Metadata now contains the metadata for 'images/forest.jpg' }) .catch((error) => { // Uh-oh, an error occurred! });
Web
// Create a reference to the file whose metadata we want to retrieve var forestRef = storageRef.child('images/forest.jpg'); // Get metadata properties forestRef.getMetadata() .then((metadata) => { // Metadata now contains the metadata for 'images/forest.jpg' }) .catch((error) => { // Uh-oh, an error occurred! });
Aktualizowanie metadanych pliku
Metadane pliku możesz zaktualizować w dowolnym momencie po zakończeniu przesyłania pliku, korzystając z metody updateMetadata()
. Więcej informacji o tym, które właściwości można aktualizować, znajdziesz na pełnej liście. Aktualizowane są tylko właściwości określone w metadanych, a wszystkie pozostałe pozostają bez zmian. updateMetadata()
zwraca Promise
zawierający pełne metadane lub błąd, jeśli Promise
odrzuci żądanie.
Web
import { getStorage, ref, updateMetadata } from "firebase/storage"; // Create a reference to the file whose metadata we want to change const storage = getStorage(); const forestRef = ref(storage, 'images/forest.jpg'); // Create file metadata to update const newMetadata = { cacheControl: 'public,max-age=300', contentType: 'image/jpeg' }; // Update metadata properties updateMetadata(forestRef, newMetadata) .then((metadata) => { // Updated metadata for 'images/forest.jpg' is returned in the Promise }).catch((error) => { // Uh-oh, an error occurred! });
Web
// Create a reference to the file whose metadata we want to change var forestRef = storageRef.child('images/forest.jpg'); // Create file metadata to update var newMetadata = { cacheControl: 'public,max-age=300', contentType: 'image/jpeg' }; // Update metadata properties forestRef.updateMetadata(newMetadata) .then((metadata) => { // Updated metadata for 'images/forest.jpg' is returned in the Promise }).catch((error) => { // Uh-oh, an error occurred! });
Aby usunąć właściwość metadanych, ustaw ją na null
:
Web
import { getStorage, ref, updateMetadata } from "firebase/storage"; const storage = getStorage(); const forestRef = ref(storage, 'images/forest.jpg'); // Create file metadata with property to delete const deleteMetadata = { contentType: null }; // Delete the metadata property updateMetadata(forestRef, deleteMetadata) .then((metadata) => { // metadata.contentType should be null }).catch((error) => { // Uh-oh, an error occurred! });
Web
// Create file metadata with property to delete var deleteMetadata = { contentType: null }; // Delete the metadata property forestRef.updateMetadata(deleteMetadata) .then((metadata) => { // metadata.contentType should be null }).catch((error) => { // Uh-oh, an error occurred! });
Obsługa błędów
Istnieje wiele powodów, dla których podczas pobierania lub aktualizowania metadanych mogą wystąpić błędy. Może to być np. brak pliku lub brak uprawnień użytkownika do uzyskania dostępu do wybranego pliku. Więcej informacji o błędach znajdziesz w sekcji Obsługa błędów w dokumentacji.
Niestandardowe metadane
Możesz określić niestandardowe metadane jako obiekt zawierający właściwości String
.
Web
const metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
Web
var metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
Możesz używać metadanych niestandardowych do przechowywania dodatkowych danych dotyczących aplikacji dla każdego pliku, ale zdecydowanie zalecamy używanie bazy danych (np. Firebase Realtime Database) do przechowywania i synchronizowania tego typu danych.
Właściwości metadanych pliku
Pełna lista właściwości metadanych pliku jest dostępna poniżej:
Właściwość | Typ | Z możliwością zapisu |
---|---|---|
bucket |
ciąg znaków | NIE |
generation |
ciąg znaków | NIE |
metageneration |
ciąg znaków | NIE |
fullPath |
ciąg znaków | NIE |
name |
ciąg znaków | NIE |
size |
liczba | NIE |
timeCreated |
ciąg znaków | NIE |
updated |
ciąg znaków | NIE |
md5Hash |
ciąg znaków | TAK w przypadku przesyłania, NIE w przypadku aktualizacji metadanych |
cacheControl |
ciąg znaków | TAK |
contentDisposition |
ciąg znaków | TAK |
contentEncoding |
ciąg znaków | TAK |
contentLanguage |
ciąg znaków | TAK |
contentType |
ciąg znaków | TAK |
customMetadata |
Obiekt zawierający mapowania ciąg znaków –> ciąg znaków | TAK |
Przesyłanie, pobieranie i aktualizowanie plików jest ważne, ale możliwość ich usuwania też. Dowiedz się, jak usuwać pliki z Cloud Storage.