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
, SizeBytes
e ContentType
(spesso indicato come tipo MIME) oltre ad alcune meno comuni come ContentDisposition
e CreationTimeMillis
. Questi metadati possono essere recuperati da un riferimento Cloud Storage utilizzando il metodo GetMetadataAsync
.
// Create reference to the file whose metadata we want to retrieve StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Get metadata properties forestRef.GetMetadataAsync().ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // do stuff with meta } });
Aggiorna metadati del file
È possibile aggiornare i metadati del file in qualsiasi momento al termine del caricamento del file utilizzando il metodo UpdateMetadataAsync
che accetta un oggetto MetadataChange
. 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 StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.CacheControl = "public,max-age=300"; newMetadata.ContentType = "image/jpeg"; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { // access the updated meta data StorageMetadata meta = task.Result; } });
Puoi eliminare le proprietà dei metadati scrivibili passando la stringa vuota:
// Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.ContentType = ""; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // meta.ContentType should be an empty string now } });
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 Dictionary<string, string>
.
var newMetadata = new MetadataChange { CustomMetadata = new Dictionary<string, string> { {"location", "Yosemite, CA, USA"}, {"activity", "Hiking"} } }; // UpdateMetadataAsync
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 | Modificabile in MetadataChange |
---|---|---|
Bucket | string | NO |
Generation | string | NO |
MetadataGeneration | string | NO |
Path | string | NO |
Name | string | NO |
SizeBytes | long | NO |
CreationTimeMillis | long | NO |
UpdatedTimeMillis | long | NO |
CacheControl | string | SÌ |
ContentDisposition | string | SÌ |
ContentEncoding | string | SÌ |
ContentLanguage | string | SÌ |
ContentType | string | SÌ |
DownloadUrl | Uri | NO |
DownloadUrls | IList<Uri> | NO |
CustomMetadataKeys | IEnumerable<string> | SÌ |
Prossimi passi
Caricare, scaricare e aggiornare i file è importante, ma lo è anche la possibilità di rimuoverli. Impariamo come eliminare file da Cloud Storage.