Après avoir importé un fichier dans la référence Cloud Storage, vous pouvez également obtenir et mettre à jour les métadonnées du fichier (par exemple, pour 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 de fichier contiennent des propriétés courantes telles que name
, size
et content_type
(souvent appelé type MIME), ainsi que des propriétés moins courantes comme content_disposition
et time_created
. 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 StorageReference forest_ref = storage_ref.Child("images/forest.jpg"); // Get metadata properties Futurefuture = forest_ref.GetMetadata(); // Wait for Future to complete... if (future.Error() != firebase::storage::kErrorNone) { // Uh-oh, an error occurred! } else { // We can now retrieve the metadata for 'images/forest.jpg' Metadata* metadata = future.Result(); }
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 à 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.
// Create reference to the file whose metadata we want to change firebase::storage::StorageReference forest_ref = storage_ref.child("images/forest.jpg"); // Create file metadata to update Metadata new_metadata; newMetadata.set_cache_control("public,max-age=300"); newMetadata.set_content_type("image/jpeg"); // Update metadata properties Futurefuture = forest_ref.UpdateMetadata(new_metadata); // Wait for Future to complete... if (future.Error() != firebase::storage::kErrorNone) { // Uh-oh, an error occurred! } else { // We can now retrieve the updated metadata for 'images/forest.jpg' Metadata* metadata = future.Result(); }
Vous pouvez supprimer les propriétés de métadonnées modifiables en transmettant la chaîne vide :
// Create file metadata with property to delete StorageMetadata new_metadata; new_metadata.set_content_type(""); // Delete the metadata property Futurefuture = forest_ref.UpdateMetadata(new_metadata); // Wait for Future to complete... if (future.Error() != 0) { // Uh-oh, an error occurred! } else { // metadata.content_type() should be an empty string Metadata* metadata = future.Result(); }
Gérer les erreurs
Plusieurs raisons peuvent expliquer les erreurs lors de la récupération ou de la mise à jour des métadonnées, y compris l'inexistence du fichier ou l'absence 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 sous la forme d'un std::map
contenant des propriétés std::string
.
std::map<std::string, std::string>* custom_metadata = metadata.custom_metadata(); custom_metadata->insert(std::make_pair("location", "Yosemite, CA, USA"); custom_metadata->insert(std::make_pair("activity", "Hiking");
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 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 |
const char* | NON |
generation |
const char* | NON |
metageneration |
const char* | NON |
full_path |
const char* | NON |
name |
const char* | NON |
size |
int64_t | NON |
time_created |
int64_t | NON |
updated |
int64_t | NON |
cache_control |
const char* | OUI |
content_disposition |
const char* | OUI |
content_encoding |
const char* | OUI |
content_language |
const char* | OUI |
content_type |
const char* | OUI |
download_urls |
std::vector<std::string> | NON |
custom_metadata |
std::map<std::string, std::string> | OUI |
Étapes suivantes
Il est important de pouvoir importer, télécharger et modifier des fichiers, mais il est tout aussi important de pouvoir les supprimer. Découvrons comment supprimer des fichiers de Cloud Storage.