Dopo aver caricato un file nel riferimento Cloud Storage, puoi anche ottenere e aggiornare i metadati del file, ad esempio per visualizzare o 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 contentType
(spesso indicato come tipo MIME) oltre ad alcune meno comuni come contentDisposition
e timeCreated
. 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
final forestRef = storageRef.child("images/forest.jpg");
// Get metadata properties
final metadata = await forestRef.getMetadata();
// Metadata now contains the metadata for 'images/forest.jpg'
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
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
Puoi eliminare le proprietà dei metadati scrivibili passando null
:
// Delete the cacheControl property
final newMetadata = SettableMetadata(cacheControl: null);
final metadata = await forestRef.updateMetadata(newMetadata);
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 utilizzando il parametro customMetadata
del costruttore 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
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 | Tavola apparecchiata? |
---|---|---|
bucket | String | NO |
generation | String | NO |
metageneration | String | NO |
metadataGeneration | String | NO |
fullPath | String | NO |
name | String | NO |
size | int | NO |
timeCreated | DateTime | NO |
updated | DateTime | NO |
md5Hash | String | NO |
cacheControl | String | SÌ |
contentDisposition | String | SÌ |
contentEncoding | String | SÌ |
contentLanguage | String | SÌ |
contentType | String | SÌ |
customMetadata | Map<String, String> | SÌ |
Caricare, scaricare e aggiornare i file è importante, ma lo è anche la possibilità di rimuoverli. Impariamo come eliminare file da Cloud Storage.