Después de cargar un archivo en la referencia de Cloud Storage, también puede obtener y actualizar los metadatos del archivo, por ejemplo, para ver o actualizar el tipo de contenido. Los archivos también pueden almacenar pares clave/valor personalizados con metadatos de archivo adicionales.
Obtener metadatos de archivos
Los metadatos de archivos contienen propiedades comunes como name
, size
y contentType
(a menudo denominado tipo MIME), además de algunas menos comunes como contentDisposition
y timeCreated
. Estos metadatos se pueden recuperar de una referencia de Cloud Storage mediante el método 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! } });
Actualizar metadatos del archivo
Puede actualizar los metadatos del archivo en cualquier momento después de que se complete la carga del archivo utilizando el método updateMetadata()
. Consulte la lista completa para obtener más información sobre qué propiedades se pueden actualizar. Sólo se actualizan las propiedades especificadas en los metadatos, todas las demás no se modifican.
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! } });
Puede eliminar propiedades de metadatos grabables pasando 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! } });
Manejar errores
Hay varias razones por las que pueden ocurrir errores al obtener o actualizar metadatos, incluido el archivo que no existe o que el usuario no tiene permiso para acceder al archivo deseado. Puede encontrar más información sobre errores en la sección Manejar errores de los documentos.
Metadatos personalizados
Puede especificar metadatos personalizados utilizando el método setCustomMetadata()
en la clase 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();
Puede almacenar datos específicos de la aplicación para cada archivo en metadatos personalizados, pero recomendamos encarecidamente utilizar una base de datos (como Firebase Realtime Database ) para almacenar y sincronizar este tipo de datos.
Propiedades de metadatos de archivo
A continuación se encuentra disponible una lista completa de las propiedades de metadatos de un archivo:
Adquirente de propiedad | Tipo | El colocador existe |
---|---|---|
getBucket | String | NO |
getGeneration | String | NO |
getMetadataGeneration | String | NO |
getPath | String | NO |
getName | String | NO |
getSizeBytes | long | NO |
getCreationTimeMillis | long | NO |
getUpdatedTimeMillis | long | NO |
getMd5Hash | String | NO |
getCacheControl | String | SÍ |
getContentDisposition | String | SÍ |
getContentEncoding | String | SÍ |
getContentLanguage | String | SÍ |
getContentType | String | SÍ |
getCustomMetadata | String | SÍ |
getCustomMetadataKeys | Set<String> | NO |
Cargar, descargar y actualizar archivos es importante, pero también lo es poder eliminarlos. Aprendamos cómo eliminar archivos de Cloud Storage.