Utiliser des métadonnées de fichiers avec Cloud Storage sur le Web

Après avoir importé un fichier pour une référence Cloud Storage, vous pouvez également obtenir ou mettre à jour les métadonnées du fichier, par exemple pour modifier le type de contenu. Fichiers peuvent également stocker des paires clé/valeur personnalisées avec des métadonnées de fichier supplémentaires.

Obtenir les métadonnées du fichier

Les métadonnées de fichier contiennent des propriétés courantes telles que name, size et contentType (souvent appelé type MIME), les plus courants comme contentDisposition et timeCreated. Ces métadonnées peuvent être récupérée à partir d'une référence Cloud Storage en utilisant la méthode getMetadata(). getMetadata() renvoie un Promise contenant le des métadonnées complètes, ou une erreur en cas de rejet de Promise.

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

Mettre à jour les métadonnées d'un fichier

Vous pouvez mettre à jour les métadonnées d'un fichier à tout moment une fois son importation terminée en à l'aide de la méthode updateMetadata(). Pour en savoir plus sur les propriétés pouvant être mises à jour, consultez la liste complète. Seules les propriétés spécifiées dans les métadonnées sont mises à jour. Toutes les autres restent inchangées. updateMetadata() renvoie un Promise. contenant les métadonnées complètes, ou une erreur en cas de rejet de Promise.

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

Vous pouvez supprimer une propriété de métadonnées en la définissant sur 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!
  });

Gérer les erreurs

Plusieurs raisons peuvent expliquer pourquoi des erreurs peuvent se produire lors de l'obtention ou de la mise à jour Métadonnées, y compris le fichier qui n'existe pas ou l'utilisateur n'a pas l'autorisation pour accéder au fichier souhaité. Pour en savoir plus sur les erreurs, consultez la section Gérer les erreurs de la documentation.

Métadonnées personnalisées

Vous pouvez spécifier des métadonnées personnalisées en tant qu'objet contenant des propriétés String.

Web

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

Web

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

Vous pouvez utiliser des métadonnées personnalisées pour stocker des données supplémentaires spécifiques à l'application pour chaque , mais nous vous conseillons vivement d'utiliser une base de données (comme Firebase Realtime Database) pour stocker et synchroniser ce type de données.

Propriétés des métadonnées de fichier

Vous trouverez ci-dessous la liste complète des propriétés des métadonnées d'un fichier:

Propriété Type Inscriptible
bucket chaîne NON
generation chaîne NON
metageneration chaîne NON
fullPath chaîne NON
name chaîne NON
size Nombre NON
timeCreated chaîne NON
updated chaîne NON
md5Hash chaîne YES lors de l'importation, NO pour updateMetadata
cacheControl chaîne OUI
contentDisposition chaîne OUI
contentEncoding chaîne OUI
contentLanguage chaîne OUI
contentType chaîne OUI
customMetadata Objet contenant des mappages de chaîne > chaîne OUI

Importer, télécharger et mettre à jour des fichiers est important, mais il est également important de pouvoir les supprimer. Découvrons comment supprimer des fichiers de Cloud Storage.