Administración de propiedades y metadatos de blobs con Java
Además de los datos que contienen, los blobs admiten propiedades del sistema y metadatos definidos por el usuario. En este artículo se muestra cómo administrar propiedades del sistema y metadatos definidos por el usuario con la biblioteca cliente de Azure Storage para Java.
Requisitos previos
- En este artículo se supone que ya tiene un proyecto configurado para trabajar con la biblioteca cliente de Azure Blob Storage para Java. Para obtener información sobre cómo configurar el proyecto, incluida la instalación de paquetes, la adición de directivas de
import
y la autorización de un objeto de cliente, consulte Introducción a Azure Storage y Java. - El mecanismo de autorización debe tener permisos para trabajar con propiedades o metadatos blob. Para obtener más información, consulte la guía de autorización para las siguientes operaciones de la API de REST:
Acerca de las propiedades y los metadatos
Propiedades del sistema: en cada recurso de almacenamiento de blobs existen propiedades del sistema. Algunas se pueden leer o establecer, mientras que otras son de solo lectura. En segundo plano, algunas propiedades del sistema corresponden a ciertos encabezados HTTP estándar. La biblioteca cliente de Azure Storage para Java mantiene estas propiedades automáticamente.
Metadatos definidos por el usuario: los metadatos definidos por el usuario se componen de uno o más pares nombre-valor que especifica para un recurso de almacenamiento de blobs. Puede usar metadatos para almacenar valores adicionales con el recurso. Los valores de metadatos se proporcionan para uso personal y no afectan a cómo se comporta el recurso.
Los pares de nombre/valor de metadatos son encabezados HTTP válidos y deben cumplir todas las restricciones que gobiernan los encabezados HTTP. Para obtener más información sobre los requisitos de nomenclatura de metadatos, consulte Nombres de metadatos.
Nota:
Las etiquetas del índice de blobs ofrecen la capacidad de almacenar atributos arbitrarios de clave-valor definidas por el usuario junto con un recurso de Azure Blob Storage. De manera similar a los metadatos, solo las etiquetas del índice de blobs se indexan automáticamente y son objeto de búsquedda mediante el Blob service nativo. Los metadatos no se pueden indexar ni consultar, a menos que se use un servicio independiente, como Azure Search.
Para obtener más información sobre esta característica, consulte Administración y búsqueda de datos de Azure Blob con etiquetas de índice de blobs.
Establecimiento y recuperación de propiedades
Para establecer propiedades en un blob, use el método siguiente:
En el ejemplo de código siguiente se establecen las propiedades del sistema ContentType
y ContentLanguage
en un blob.
Se borran todas las propiedades no establecidas explícitamente. En el siguiente ejemplo de código se obtienen primero las propiedades actuales del blob y, a continuación, se usan para rellenar los encabezados que no se actualizan.
public void setBlobProperties(BlobClient blobClient) {
BlobProperties properties = blobClient.getProperties();
// Set the ContentLanguage and ContentType headers, and populate the remaining
// headers from the existing properties
BlobHttpHeaders blobHeaders = new BlobHttpHeaders()
.setContentLanguage("en-us")
.setContentType("text/plain")
.setCacheControl(properties.getCacheControl())
.setContentDisposition(properties.getContentDisposition())
.setContentEncoding(properties.getContentEncoding())
.setContentMd5(properties.getContentMd5());
blobClient.setHttpHeaders(blobHeaders);
System.out.println("Set HTTP headers completed");
}
Para recuperar propiedades en un blob, use el método siguiente:
En el ejemplo de código siguiente se obtienen las propiedades del sistema de un blob y se muestran algunos de los valores:
public void getBlobProperties(BlobClient blobClient) {
BlobProperties properties = blobClient.getProperties();
System.out.printf("BlobType: %s%n", properties.getBlobType());
System.out.printf("BlobSize: %d%n", properties.getBlobSize());
System.out.printf("ContentLanguage: %s%n", properties.getContentLanguage());
System.out.printf("ContentType: %s%n", properties.getContentType());
}
Establecimiento y recuperación de metadatos
Puede especificar metadatos como uno o más pares nombre-valor en un recurso de blob o contenedor. Para establecer metadatos, envíe un objeto Map que contenga pares nombre-valor con el siguiente método:
El siguiente ejemplo de código establece los metadatos de un blob:
public void addBlobMetadata(BlobClient blobClient) {
Map<String, String> metadata = new HashMap<String, String>();
metadata.put("docType", "text");
metadata.put("category", "reference");
try {
blobClient.setMetadata(metadata);
System.out.printf("Set metadata completed %n");
} catch (UnsupportedOperationException error) {
System.out.printf("Failure while setting metadata %n");
}
}
Para recuperar metadatos, llame al método getProperties en el blob para rellenar la colección de metadatos y, a continuación, lea los valores, como se muestra en el ejemplo siguiente. El método getProperties
recupera propiedades y metadatos de blobs llamando a la operaciones Get Blob Properties y Get Blob Metadata.
En el ejemplo de código siguiente se leen los metadatos de un blob y se imprime cada par clave-valor:
public void readBlobMetadata(BlobClient blobClient) {
// Get blob properties and metadata
BlobProperties properties = blobClient.getProperties();
System.out.printf("Blob metadata: %n");
properties.getMetadata().entrySet().forEach(metadataItem -> {
System.out.printf(" %s = %s%n", metadataItem.getKey(), metadataItem.getValue());
});
}
Recursos
Para obtener más información sobre cómo administrar las propiedades del sistema y los metadatos definidos por el usuario usando la biblioteca cliente de Azure Blob Storage para Java, consulte los siguientes recursos.
Operaciones de API REST
El SDK de Azure para Java contiene bibliotecas que se crean a partir de la API REST de Azure, lo que le permite interactuar con las operaciones de API REST a través de paradigmas conocidos de Java. Los métodos de la biblioteca cliente para administrar las propiedades del sistema y los metadatos definidos por el usuario usan las siguientes operaciones de la API de REST:
- Set Blob Properties (API REST)
- Get Blob Properties (API REST)
- Set Blob Metadata (API REST)
- Get Blob Metadata (API REST)
Ejemplos de código
Recursos de la biblioteca cliente
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente las Cuestiones de GitHub como mecanismo de retroalimentación para el contenido y lo sustituiremos por un nuevo sistema de retroalimentación. Para más información, consulta:Enviar y ver comentarios de