Verwenden Sie Dateimetadaten mit Cloud Storage im Web

Nach dem Hochladen einer Datei in die Cloud Storage-Referenz können Sie auch die Dateimetadaten abrufen oder aktualisieren, um beispielsweise den Inhaltstyp zu aktualisieren. Dateien können auch benutzerdefinierte Schlüssel/Wert-Paare mit zusätzlichen Dateimetadaten speichern.

Dateimetadaten abrufen

Dateimetadaten enthalten allgemeine Eigenschaften wie name , size und contentType (häufig als MIME-Typ bezeichnet) sowie einige weniger häufige Eigenschaften wie contentDisposition und timeCreated . Diese Metadaten können mit der Methode getMetadata() aus einer Cloud Storage-Referenz abgerufen werden. getMetadata() gibt ein Promise zurück, das die vollständigen Metadaten enthält, oder einen Fehler, wenn das Promise ablehnt.

Web modular API

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 namespaced API

// 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 Dateimetadaten jederzeit nach Abschluss des Datei-Uploads aktualisieren, indem Sie die Methode updateMetadata() verwenden. Weitere Informationen darüber, welche Eigenschaften aktualisiert werden können, finden Sie in der vollständigen Liste . Es werden nur die in den Metadaten angegebenen Eigenschaften aktualisiert, alle anderen bleiben unverändert. updateMetadata() gibt ein Promise zurück, das die vollständigen Metadaten enthält, oder einen Fehler, wenn das Promise ablehnt.

Web modular API

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 namespaced API

// 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 eine Metadateneigenschaft löschen, indem Sie sie auf null setzen:

Web modular API

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 namespaced API

// 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!
  });

Behandeln Sie Fehler

Es gibt eine Reihe von Gründen, warum beim Abrufen oder Aktualisieren von Metadaten Fehler auftreten können, darunter, dass die Datei nicht vorhanden ist oder der Benutzer keine Berechtigung zum Zugriff auf die gewünschte Datei hat. Weitere Informationen zu Fehlern finden Sie im Abschnitt „Fehler behandeln“ der Dokumentation.

Benutzerdefinierte Metadaten

Sie können benutzerdefinierte Metadaten als Objekt angeben, das String Eigenschaften enthält.

Web modular API

const metadata = {
  customMetadata: {
    'location': 'Yosemite, CA, USA',
    'activity': 'Hiking'
  }
};

Web namespaced API

var metadata = {
  customMetadata: {
    'location': 'Yosemite, CA, USA',
    'activity': 'Hiking'
  }
};

Sie können benutzerdefinierte Metadaten verwenden, um zusätzliche app-spezifische 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.

Dateimetadateneigenschaften

Eine vollständige Liste der Metadateneigenschaften einer Datei finden Sie unten:

Eigentum Typ Schreibbar
bucket Zeichenfolge NEIN
generation Zeichenfolge NEIN
metageneration Zeichenfolge NEIN
fullPath Zeichenfolge NEIN
name Zeichenfolge NEIN
size Nummer NEIN
timeCreated Zeichenfolge NEIN
updated Zeichenfolge NEIN
md5Hash Zeichenfolge JA beim Hochladen, NEIN bei updateMetadata
cacheControl Zeichenfolge JA
contentDisposition Zeichenfolge JA
contentEncoding Zeichenfolge JA
contentLanguage Zeichenfolge JA
contentType Zeichenfolge JA
customMetadata Objekt, das String->String-Zuordnungen enthält JA

Das Hochladen, Herunterladen und Aktualisieren von Dateien ist wichtig, aber auch die Möglichkeit, sie zu entfernen. Erfahren Sie, wie Sie Dateien aus dem Cloud-Speicher löschen .