Nachdem Sie eine Datei in Cloud Storage hochgeladen haben, können Sie auch die Dateimetadaten abrufen oder aktualisieren, z. B. um den Inhaltstyp zu aktualisieren. In Dateien können auch benutzerdefinierte Schlüssel/Wert-Paare mit zusätzlichen Dateimetadaten gespeichert werden.
Dateimetadaten abrufen
Dateimetadaten enthalten neben einigen weniger häufigen Attributen wie contentDisposition und timeCreated auch allgemeine Attribute wie name, size und contentType (oft als MIME-Typ bezeichnet). Diese Metadaten können mit der Methode getMetadata() aus einer Cloud Storage Referenz abgerufen werden. getMetadata() gibt ein Promise mit den vollständigen Metadaten oder einen Fehler zurück, wenn das Promise abgelehnt wird.
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! });
Dateimetadaten aktualisieren
Sie können die Dateimetadaten jederzeit nach Abschluss des Dateiuploads mit der Methode updateMetadata() aktualisieren. In der
vollständigen Liste finden Sie weitere Informationen zu den Attributen, die
aktualisiert werden können. Es werden nur die in den Metadaten angegebenen Attribute aktualisiert. Alle anderen bleiben unverändert. updateMetadata() gibt ein Promise mit den vollständigen Metadaten oder einen Fehler zurück, wenn das Promise abgelehnt wird.
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! });
Sie können ein Metadatenattribut löschen, indem Sie es auf null setzen:
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! });
Fehlerbehandlung
Es gibt eine Reihe von Gründen, warum beim Abrufen oder Aktualisieren von Metadaten Fehler auftreten können. Dazu gehören beispielsweise, dass die Datei nicht vorhanden ist oder der Nutzer keine Berechtigung für den Zugriff auf die gewünschte Datei hat. Weitere Informationen zu Fehlern finden Sie im Abschnitt Fehlerbehandlung der Dokumentation.
Benutzerdefinierte Metadaten
Sie können benutzerdefinierte Metadaten als Objekt mit String-Attributen angeben.
Web
const metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
Web
var metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
Sie können benutzerdefinierte Metadaten verwenden, um zusätzliche appspezifische Daten für jede Datei zu speichern. Wir empfehlen jedoch dringend, eine Datenbank (z. B. die Firebase Realtime Database) zu verwenden, um diese Art von Daten zu speichern und zu synchronisieren.
Attribute von Dateimetadaten
Eine vollständige Liste der Metadatenattribute für eine Datei finden Sie unten:
| Attribut | Typ | Bearbeitbar |
|---|---|---|
bucket |
String | NEIN |
generation |
String | NEIN |
metageneration |
String | NEIN |
fullPath |
String | NEIN |
name |
String | NEIN |
size |
Zahl | NEIN |
timeCreated |
String | NEIN |
updated |
String | NEIN |
md5Hash |
String | JA beim Upload, NEIN bei updateMetadata |
cacheControl |
String | JA |
contentDisposition |
String | JA |
contentEncoding |
String | JA |
contentLanguage |
String | JA |
contentType |
String | JA |
customMetadata |
Objekt mit String-zu-String-Zuordnungen | JA |
Das Hochladen, Herunterladen und Aktualisieren von Dateien ist wichtig, aber auch das Entfernen von Dateien. Hier erfahren Sie, wie Sie Dateien löschen aus Cloud Storage.