Utiliser des métadonnées de fichiers avec Cloud Storage sur les plates-formes Apple

Après avoir importé un fichier dans la référence Cloud Storage, vous pouvez également obtenir et mettre à jour les métadonnées du fichier, par exemple pour modifier le type de contenu. Les fichiers peuvent également stocker des paires clé/valeur personnalisées avec des métadonnées de fichier supplémentaires.

Obtenir les métadonnées des fichiers

Les métadonnées de fichier contiennent des propriétés courantes telles que name, size et contentType (souvent appelées type MIME), en plus de certaines propriétés moins courantes comme contentDisposition et timeCreated. Ces métadonnées peuvent être récupérées à partir d'une référence Cloud Storage à l'aide de la méthode metadataWithCompletion:.

Swift

// 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 {
  // ...
}
    

Objective-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'
  }
}];
  

Mettre à jour les métadonnées des fichiers

Vous pouvez mettre à jour les métadonnées des fichiers à tout moment après l'importation des fichiers à l'aide de la méthode updateMetadata:withCompletion:. Pour en savoir plus sur les propriétés pouvant être mises à jour, consultez la liste complète. Seules les propriétés spécifiées dans les métadonnées sont mises à jour. Toutes les autres ne sont pas modifiées.

Swift

// 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 {
  // ...
}
    

Objective-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
  }
}];
  

Vous pouvez supprimer des propriétés de métadonnées en lecture/écriture en les définissant sur nil:

Objective-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
  }
}];

Swift

let newMetadata = StorageMetadata()
newMetadata.contentType = nil

do {
  // Delete the metadata property
  let updatedMetadata = try await forestRef.updateMetadata(newMetadata)
} catch {
  // ...
}

Gérer les erreurs

Plusieurs raisons peuvent expliquer l'apparition d'erreurs lors de l'obtention ou de la mise à jour de métadonnées, y compris si le fichier n'existe pas ou si l'utilisateur n'est pas autorisé à accéder au fichier souhaité. Pour en savoir plus sur les erreurs, consultez la section Gérer les erreurs de la documentation.

Métadonnées personnalisées

Vous pouvez spécifier des métadonnées personnalisées en tant que NSDictionary contenant des propriétés NSString.

Swift

let metadata = [
  "customMetadata": [
    "location": "Yosemite, CA, USA",
    "activity": "Hiking"
  ]
]
    

Objective-C

NSDictionary *metadata = @{
  @"customMetadata": @{
    @"location": @"Yosemite, CA, USA",
    @"activity": @"Hiking"
  }
};

Vous pouvez stocker des données spécifiques à l'application pour chaque fichier dans des métadonnées personnalisées, mais nous vous recommandons vivement d'utiliser une base de données (telle que Firebase Realtime Database) pour stocker et synchroniser ce type de données.

Propriétés des métadonnées de fichier

Vous trouverez ci-dessous la liste complète des propriétés de métadonnées d'un fichier :

Propriété Type Accessible en écriture
bucket Chaîne Non
generation Chaîne Non
metageneration Chaîne Non
fullPath Chaîne Non
name Chaîne Non
size Int64 Non
timeCreated Date Non
updated Date Non
md5Hash Chaîne Oui
cacheControl Chaîne Oui
contentDisposition Chaîne Oui
contentEncoding Chaîne Oui
contentLanguage Chaîne Oui
contentType Chaîne Oui
customMetadata [Chaîne: Chaîne] Oui

Importer, télécharger et mettre à jour des fichiers est important, mais il est également important de pouvoir les supprimer. Découvrez comment supprimer des fichiers depuis Cloud Storage.