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 afficher ou mettre à jour 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 du fichier
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 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 getMetadata()
.
Kotlin+KTX
// Create a storage reference from our app val storageRef = storage.reference // Get reference to the file val forestRef = storageRef.child("images/forest.jpg")
forestRef.metadata.addOnSuccessListener { metadata -> // Metadata now contains the metadata for 'images/forest.jpg' }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create a storage reference from our app StorageReference storageRef = storage.getReference(); // Get reference to the file StorageReference forestRef = storageRef.child("images/forest.jpg");
forestRef.getMetadata().addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // Metadata now contains the metadata for 'images/forest.jpg' } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
Mettre à jour les métadonnées du fichier
Vous pouvez mettre à jour les métadonnées du fichier à tout moment une fois le téléchargement du fichier terminé en utilisant la méthode updateMetadata()
. Reportez-vous à la liste complète pour plus d'informations sur les propriétés pouvant être mises à jour. Seules les propriétés spécifiées dans les métadonnées sont mises à jour, toutes les autres restent inchangées.
Kotlin+KTX
// Create a storage reference from our app val storageRef = storage.reference // Get reference to the file val forestRef = storageRef.child("images/forest.jpg")
// Create file metadata including the content type val metadata = storageMetadata { contentType = "image/jpg" setCustomMetadata("myCustomProperty", "myValue") } // Update metadata properties forestRef.updateMetadata(metadata).addOnSuccessListener { updatedMetadata -> // Updated metadata is in updatedMetadata }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create a storage reference from our app StorageReference storageRef = storage.getReference(); // Get reference to the file StorageReference forestRef = storageRef.child("images/forest.jpg");
// Create file metadata including the content type StorageMetadata metadata = new StorageMetadata.Builder() .setContentType("image/jpg") .setCustomMetadata("myCustomProperty", "myValue") .build(); // Update metadata properties forestRef.updateMetadata(metadata) .addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // Updated metadata is in storageMetadata } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
Vous pouvez supprimer les propriétés de métadonnées inscriptibles en passant null
:
Kotlin+KTX
// Create file metadata with property to delete val metadata = storageMetadata { contentType = null } // Delete the metadata property forestRef.updateMetadata(metadata).addOnSuccessListener { updatedMetadata -> // updatedMetadata.contentType should be null }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create file metadata with property to delete StorageMetadata metadata = new StorageMetadata.Builder() .setContentType(null) .build(); // Delete the metadata property forestRef.updateMetadata(metadata) .addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // metadata.contentType should be null } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
Gérer les erreurs
Il existe un certain nombre de raisons pour lesquelles des erreurs peuvent se produire lors de l'obtention ou de la mise à jour des métadonnées, notamment le fait que le fichier n'existe pas ou que l'utilisateur n'a pas l'autorisation d'accéder au fichier souhaité. Vous trouverez plus d'informations sur les erreurs dans la section Gérer les erreurs de la documentation.
Métadonnées personnalisées
Vous pouvez spécifier des métadonnées personnalisées à l'aide de la méthode setCustomMetadata()
dans la classe StorageMetadata.Builder
.
Kotlin+KTX
val metadata = storageMetadata { setCustomMetadata("location", "Yosemite, CA, USA") setCustomMetadata("activity", "Hiking") }
Java
StorageMetadata metadata = new StorageMetadata.Builder() .setCustomMetadata("location", "Yosemite, CA, USA") .setCustomMetadata("activity", "Hiking") .build();
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
Une liste complète des propriétés des métadonnées d'un fichier est disponible ci-dessous :
Accesseur de propriété | Taper | Le passeur existe |
---|---|---|
getBucket | String | NON |
getGeneration | String | NON |
getMetadataGeneration | String | NON |
getPath | String | NON |
getName | String | NON |
getSizeBytes | long | NON |
getCreationTimeMillis | long | NON |
getUpdatedTimeMillis | long | NON |
getMd5Hash | String | NON |
getCacheControl | String | OUI |
getContentDisposition | String | OUI |
getContentEncoding | String | OUI |
getContentLanguage | String | OUI |
getContentType | String | OUI |
getCustomMetadata | String | OUI |
getCustomMetadataKeys | Set<String> | NON |
Le téléchargement, le téléchargement et la mise à jour de fichiers sont importants, mais il est tout aussi important de pouvoir les supprimer. Apprenons à supprimer des fichiers de Cloud Storage.
,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 afficher ou mettre à jour 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 du fichier
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 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 getMetadata()
.
Kotlin+KTX
// Create a storage reference from our app val storageRef = storage.reference // Get reference to the file val forestRef = storageRef.child("images/forest.jpg")
forestRef.metadata.addOnSuccessListener { metadata -> // Metadata now contains the metadata for 'images/forest.jpg' }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create a storage reference from our app StorageReference storageRef = storage.getReference(); // Get reference to the file StorageReference forestRef = storageRef.child("images/forest.jpg");
forestRef.getMetadata().addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // Metadata now contains the metadata for 'images/forest.jpg' } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
Mettre à jour les métadonnées du fichier
Vous pouvez mettre à jour les métadonnées du fichier à tout moment une fois le téléchargement du fichier terminé en utilisant la méthode updateMetadata()
. Reportez-vous à la liste complète pour plus d'informations sur les propriétés pouvant être mises à jour. Seules les propriétés spécifiées dans les métadonnées sont mises à jour, toutes les autres restent inchangées.
Kotlin+KTX
// Create a storage reference from our app val storageRef = storage.reference // Get reference to the file val forestRef = storageRef.child("images/forest.jpg")
// Create file metadata including the content type val metadata = storageMetadata { contentType = "image/jpg" setCustomMetadata("myCustomProperty", "myValue") } // Update metadata properties forestRef.updateMetadata(metadata).addOnSuccessListener { updatedMetadata -> // Updated metadata is in updatedMetadata }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create a storage reference from our app StorageReference storageRef = storage.getReference(); // Get reference to the file StorageReference forestRef = storageRef.child("images/forest.jpg");
// Create file metadata including the content type StorageMetadata metadata = new StorageMetadata.Builder() .setContentType("image/jpg") .setCustomMetadata("myCustomProperty", "myValue") .build(); // Update metadata properties forestRef.updateMetadata(metadata) .addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // Updated metadata is in storageMetadata } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
Vous pouvez supprimer les propriétés de métadonnées inscriptibles en passant null
:
Kotlin+KTX
// Create file metadata with property to delete val metadata = storageMetadata { contentType = null } // Delete the metadata property forestRef.updateMetadata(metadata).addOnSuccessListener { updatedMetadata -> // updatedMetadata.contentType should be null }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create file metadata with property to delete StorageMetadata metadata = new StorageMetadata.Builder() .setContentType(null) .build(); // Delete the metadata property forestRef.updateMetadata(metadata) .addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // metadata.contentType should be null } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
Gérer les erreurs
Il existe un certain nombre de raisons pour lesquelles des erreurs peuvent se produire lors de l'obtention ou de la mise à jour des métadonnées, notamment le fait que le fichier n'existe pas ou que l'utilisateur n'a pas l'autorisation d'accéder au fichier souhaité. Vous trouverez plus d'informations sur les erreurs dans la section Gérer les erreurs de la documentation.
Métadonnées personnalisées
Vous pouvez spécifier des métadonnées personnalisées à l'aide de la méthode setCustomMetadata()
dans la classe StorageMetadata.Builder
.
Kotlin+KTX
val metadata = storageMetadata { setCustomMetadata("location", "Yosemite, CA, USA") setCustomMetadata("activity", "Hiking") }
Java
StorageMetadata metadata = new StorageMetadata.Builder() .setCustomMetadata("location", "Yosemite, CA, USA") .setCustomMetadata("activity", "Hiking") .build();
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
Une liste complète des propriétés des métadonnées d'un fichier est disponible ci-dessous :
Accesseur de propriété | Taper | Le passeur existe |
---|---|---|
getBucket | String | NON |
getGeneration | String | NON |
getMetadataGeneration | String | NON |
getPath | String | NON |
getName | String | NON |
getSizeBytes | long | NON |
getCreationTimeMillis | long | NON |
getUpdatedTimeMillis | long | NON |
getMd5Hash | String | NON |
getCacheControl | String | OUI |
getContentDisposition | String | OUI |
getContentEncoding | String | OUI |
getContentLanguage | String | OUI |
getContentType | String | OUI |
getCustomMetadata | String | OUI |
getCustomMetadataKeys | Set<String> | NON |
Le téléchargement, le téléchargement et la mise à jour de fichiers sont importants, mais il est tout aussi important de pouvoir les supprimer. Apprenons à supprimer des fichiers de Cloud Storage.