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 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 metadataWithCompletion:
Veloce
// Create reference to the file whose metadata we want to retrieve let forestRef = storageRef.child("images/forest.jpg") // Get metadata properties do { let metadata = try await forestRef.getMetadata() } catch { // ... }
Obiettivo-C
// Create reference to the file whose metadata we want to retrieve FIRStorageReference *forestRef = [storageRef child:@"images/forest.jpg"]; // Get metadata properties [forestRef metadataWithCompletion:^(FIRStorageMetadata *metadata, NSError *error) { if (error != nil) { // Uh-oh, an error occurred! } else { // 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:withCompletion:
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.
Veloce
// Create reference to the file whose metadata we want to change let forestRef = storageRef.child("images/forest.jpg") // Create file metadata to update let newMetadata = StorageMetadata() newMetadata.cacheControl = "public,max-age=300" newMetadata.contentType = "image/jpeg" // Update metadata properties do { let updatedMetadata = try await forestRef.updateMetadata(newMetadata) } catch { // ... }
Obiettivo-C
// Create reference to the file whose metadata we want to change FIRStorageReference *forestRef = [storageRef child:@"images/forest.jpg"]; // Create file metadata to update FIRStorageMetadata *newMetadata = [[FIRStorageMetadata alloc] init]; newMetadata.cacheControl = @"public,max-age=300"; newMetadata.contentType = @"image/jpeg"; // Update metadata properties [forestRef updateMetadata:newMetadata completion:^(FIRStorageMetadata *metadata, NSError *error){ if (error != nil) { // Uh-oh, an error occurred! } else { // Updated metadata for 'images/forest.jpg' is returned } }];
È possibile eliminare le proprietà dei metadati scrivibili impostandole su nil
:
Obiettivo-C
FIRStorageMetadata *newMetadata = [[FIRStorageMetadata alloc] init]; newMetadata.contentType = nil; // Delete the metadata property [forestRef updateMetadata:newMetadata completion:^(FIRStorageMetadata *metadata, NSError *error){ if (error != nil) { // Uh-oh, an error occurred! } else { // metadata.contentType should be nil } }];
Veloce
let newMetadata = StorageMetadata() newMetadata.contentType = nil do { // Delete the metadata property let updatedMetadata = try await forestRef.updateMetadata(newMetadata) } catch { // ... }
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 per accedere al file desiderato. Ulteriori informazioni sugli errori sono disponibili nella sezione Gestione degli errori della documentazione.
Metadati personalizzati
È possibile specificare metadati personalizzati come NSDictionary
contenente le proprietà NSString
.
Veloce
let metadata = [ "customMetadata": [ "location": "Yosemite, CA, USA", "activity": "Hiking" ] ]
Obiettivo-C
NSDictionary *metadata = @{ @"customMetadata": @{ @"location": @"Yosemite, CA, USA", @"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 | Corda | NO |
generation | Corda | NO |
metageneration | Corda | NO |
fullPath | Corda | NO |
name | Corda | NO |
size | Int64 | NO |
timeCreated | Data | NO |
updated | Data | NO |
md5Hash | Corda | SÌ |
cacheControl | Corda | SÌ |
contentDisposition | Corda | SÌ |
contentEncoding | Corda | SÌ |
contentLanguage | Corda | SÌ |
contentType | Corda | SÌ |
customMetadata | [Stringa: Stringa] | SÌ |
Caricare, scaricare e aggiornare i file è importante, ma lo è anche la possibilità di rimuoverli. Impariamo come eliminare file da Cloud Storage.