Utiliser des métadonnées de fichier avec Cloud Storage sur Flutter

Après avoir importé un fichier dans une référence Cloud Storage, vous pouvez également obtenir et mettre à jour ses métadonnées, par exemple pour afficher ou modifier 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 d'un fichier

Les métadonnées d'un fichier contiennent des propriétés courantes telles que name, size et contentType (souvent appelé type MIME), ainsi que d'autres moins courantes comme 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().

// Create reference to the file whose metadata we want to retrieve
final forestRef = storageRef.child("images/forest.jpg");

// Get metadata properties
final metadata = await forestRef.getMetadata();

// Metadata now contains the metadata for 'images/forest.jpg'

Mettre à jour les métadonnées d'un 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 qui peuvent ê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.

// Create reference to the file whose metadata we want to change
final forestRef = storageRef.child("images/forest.jpg");

// Create file metadata to update
final newMetadata = SettableMetadata(
  cacheControl: "public,max-age=300",
  contentType: "image/jpeg",
);

// Update metadata properties
final metadata = await forestRef.updateMetadata(newMetadata);

// Updated metadata for 'images/forest.jpg' is returned

Vous pouvez supprimer des propriétés de métadonnées accessibles en écriture en transmettant null :

// Delete the cacheControl property
final newMetadata = SettableMetadata(cacheControl: null);
final metadata = await forestRef.updateMetadata(newMetadata);

Gérer les erreurs

Plusieurs raisons peuvent expliquer les erreurs lors de l'obtention ou de la mise à jour des métadonnées, y compris l'inexistence du fichier ou le manque d'autorisation de l'utilisateur 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 à l'aide du paramètre customMetadata du constructeur SettableMetadata :

// Create reference to the file whose metadata we want to change
final forestRef = storageRef.child("images/forest.jpg");

// Create file metadata to update
final newCustomMetadata = SettableMetadata(
  customMetadata: {
    "location": "Yosemite, CA, USA",
    "activity": "Hiking",
  },
);

// Update metadata properties
final metadata = await forestRef.updateMetadata(newCustomMetadata);

// Updated metadata for 'images/forest.jpg' is returned

Vous pouvez stocker des données spécifiques à l'application pour chaque fichier dans des métadonnées personnalisées, mais nous vous recommandons vivement d'utiliser une base de données (telle que la base de données en temps réel Firebase) 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 Peut être définie ?
bucket String Non
generation String Non
metageneration String Non
metadataGeneration String Non
fullPath String Non
name String Non
size int Non
timeCreated DateTime Non
updated DateTime Non
md5Hash String Non
cacheControl String Oui
contentDisposition String Oui
contentEncoding String Oui
contentLanguage String Oui
contentType String Oui
customMetadata Map<String, String> 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.