Après avoir importé un fichier dans la référence Cloud Storage, vous pouvez également obtenir ou mettre à jour les métadonnées du fichier, par exemple pour mettre à jour le type de contenu. Les 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ées "type MIME"), ainsi que d'autres moins courantes telles que contentDisposition et timeCreated. Ces métadonnées peuvent être récupérées à partir d'une référence Cloud Storage à l'aide de la méthode getMetadata(). getMetadata() renvoie une Promise contenant les métadonnées complètes, ou une erreur si la Promise est rejetée.
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 du fichier
Vous pouvez mettre à jour les métadonnées d'un fichier à tout moment après l'importation du fichier à 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 si le Promise est rejeté.
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 l'apparition d'erreurs lors de l'obtention ou de la mise à jour des métadonnées, par exemple si le fichier n'existe pas ou si l'utilisateur n'est pas autorisé à 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 fichier, mais nous vous recommandons vivement d'utiliser une base de données (telle que 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 de métadonnées d'un fichier :
| Propriété | Type | Accessible en écriture |
|---|---|---|
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 | OUI pour l'importation, NON 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 chaîne->chaîne | OUI |
L'importation, le téléchargement et la mise à jour de fichiers sont importants, mais il est également essentiel de pouvoir les supprimer. Découvrez comment supprimer des fichiers de Cloud Storage.