Po przesłaniu pliku do Cloud Storage możesz również uzyskać lub zaktualizować metadane pliku, na przykład 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 typowe, takie jak contentDisposition
i timeCreated
. Te metadane można pobrać z pliku referencyjnego Cloud Storage za pomocą metody getMetadata()
. Funkcja getMetadata()
zwraca Promise
zawierający kompletne metadane lub błąd, jeśli 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 jego przesyłania. Aby to zrobić, użyj metody updateMetadata()
. Więcej informacji o tym, które właściwości można aktualizować, znajdziesz na tej liście. Zaktualizowane zostaną tylko właściwości określone w metadanych. Wszystkie pozostałe pozostaną bez zmian. Funkcja updateMetadata()
zwraca Promise
zawierający pełne metadane lub błąd, jeśli Promise
zostanie odrzucony.
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
Błędy podczas pobierania lub aktualizowania metadanych mogą wystąpić z różnych powodów, na przykład z powodu braku pliku lub braku uprawnień użytkownika do wybranego pliku. Więcej informacji o błędach znajdziesz w sekcji Obsługa błędów w tej dokumentacji.
Niestandardowe metadane
Niestandardowe metadane możesz określić 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ć niestandardowych metadanych 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
Poniżej znajdziesz pełną listę właściwości metadanych pliku:
Właściwość | Typ | Możliwość 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 updateMetadata |
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 równie ważne jest ich usuwanie. Dowiedz się, jak usuwać pliki z usługi Cloud Storage.