Utilizza i metadati dei file con Cloud Storage for C++

Dopo aver caricato un file nel riferimento Cloud Storage, puoi anche ottenere e aggiornare i metadati del file, ad esempio per aggiornare il tipo di contenuto. I file possono anche memorizzare coppie chiave/valore personalizzate con metadati di file aggiuntivi.

Ottieni 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 come content_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
Future future = 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 metadati del file

È possibile aggiornare i metadati del file in qualsiasi momento al termine del caricamento del file utilizzando il metodo UpdateMetadata . Fare riferimento all'elenco completo per ulteriori informazioni su quali proprietà possono essere aggiornate. Vengono aggiornate solo le proprietà specificate nei metadati, 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
Future future = 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
Future future = 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 il recupero o l'aggiornamento dei metadati, incluso il file inesistente o la mancata autorizzazione dell'utente ad accedere al file desiderato. Ulteriori informazioni sugli errori sono disponibili nella sezione Gestione degli errori della documentazione.

Metadati personalizzati

È possibile specificare metadati personalizzati come std::map contenente proprietà std::string .

std::map* 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 dati specifici dell'app per ciascun file in metadati personalizzati, ma ti consigliamo vivamente di utilizzare un database (come Firebase Realtime Database ) per archiviare e sincronizzare questo tipo di dati.

Proprietà dei metadati dei file

Di seguito è disponibile un elenco completo delle proprietà dei metadati su un file:

Proprietà Tipo Scrivibile
bucket carattere cost* NO
generation carattere cost* NO
metageneration carattere cost* NO
full_path carattere cost* NO
name carattere cost* NO
size int64_t NO
time_created int64_t NO
updated int64_t NO
cache_control carattere cost*
content_disposition carattere cost*
content_encoding carattere cost*
content_language carattere cost*
content_type carattere cost*
download_urls std::vettore<std::string> NO
custom_metadata std::map<std::string, std::string>

Prossimi passi

Caricare, scaricare e aggiornare i file è importante, ma lo è anche la possibilità di rimuoverli. Impariamo come eliminare file da Cloud Storage.