Dopo aver caricato un file come riferimento Cloud Storage, puoi anche recuperare e aggiornare i metadati del file, ad esempio per aggiornare il tipo di contenuti. I file possono anche memorizzare coppie chiave/valore personalizzate con metadati aggiuntivi dei file.
Recupera i metadati del file
I metadati dei file contengono proprietà comuni come name
, size
e
content_type
(spesso indicato come tipo MIME), oltre ad alcune meno comuni comecontent_disposition
e time_created
. Questi metadati possono essere recuperati da un riferimento Cloud Storage utilizzando il metodo 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(); }
Aggiorna i metadati del file
Puoi aggiornare i metadati dei file in qualsiasi momento al termine del caricamento utilizzando il metodo UpdateMetadata
. Consulta l'elenco completo per ulteriori informazioni sulle proprietà che possono essere aggiornate. Vengono aggiornate solo le proprietà specificate nei metadati, mentre tutte le altre rimangono invariate.
// 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(); }
Puoi eliminare le proprietà dei metadati scrivibili passando la stringa vuota:
// 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(); }
Gestire gli errori
Esistono diversi motivi per cui potrebbero verificarsi errori durante l'ottenimento o l'aggiornamento dei metadati, tra cui il fatto che il file non esista o che l'utente non abbia l'autorizzazione per accedere al file desiderato. Puoi trovare ulteriori informazioni sugli errori nella sezione Gestire gli errori della documentazione.
Metadati personalizzati
Puoi specificare i metadati personalizzati come std::map
contenente proprietà 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");
Puoi archiviare i dati specifici dell'app per ogni file nei metadati personalizzati, ma ti consigliamo vivamente di utilizzare un database (ad esempio Firebase Realtime Database) per archiviare e sincronizzare questo tipo di dati.
Proprietà dei metadati dei file
Di seguito è riportato un elenco completo delle proprietà dei metadati di un file:
Proprietà | Tipo | Scrivibile |
---|---|---|
bucket |
const char* | NO |
generation |
const char* | NO |
metageneration |
const char* | NO |
full_path |
const char* | NO |
name |
const char* | NO |
size |
int64_t | NO |
time_created |
int64_t | NO |
updated |
int64_t | NO |
cache_control |
const char* | SÌ |
content_disposition |
const char* | SÌ |
content_encoding |
const char* | SÌ |
content_language |
const char* | SÌ |
content_type |
const char* | SÌ |
download_urls |
std::vector<std::string> | NO |
custom_metadata |
std::map<std::string, std::string> | SÌ |
Passaggi successivi
Caricare, scaricare e aggiornare i file è importante, ma lo è anche la possibilità di rimuoverli. Scopri come eliminare i file da Cloud Storage.