无法使用 java 检索 Azure 存储 Blob 中 Blob 的元数据



我正在使用java apifor Azure,如下所述 https://learn.microsoft.com/en-us/java/api/overview/azure/storage?view=azure-java-stable

在下面的代码示例中,我能够从 BlobItem 对象中检索 Blob 内容,但"元数据"除外,尽管我已手动将元数据添加到 Azure 门户中的 Blob,但它仍返回 null。

BlobServiceClient blobServiceClient = new 
BlobServiceClientBuilder().connectionString(azConnectionString).buildClient();
BlobContainerClient blobContainerClient = blobServiceClient.getBlobContainerClient("myContainer")
ListBlobsOptions listsBlobOptions = new ListBlobsOptions();
listsBlobOptions.getDetails().getRetrieveMetadata();
blobContainerClient.listBlobs(listsBlobOptions, Duration.ofHours(1000)).forEach(blobItem -> {
log.info(blobItem.getName());
log.info(blobItem.getProperties().getETag());
log.info(String.valueOf(blobItem.getProperties().getLeaseStatus()));
log.info(String.valueOf(blobItem.getMetadata()));
});

感谢帮助

问候

我相信您没有获得元数据的原因是您没有setting元数据选项。

您可以尝试以下操作(未经测试的代码(吗?

BlobServiceClient blobServiceClient = new 
BlobServiceClientBuilder().connectionString(azConnectionString).buildClient();
BlobContainerClient blobContainerClient = blobServiceClient.getBlobContainerClient("myContainer")
BlobListDetails blobListDetails = (new BlobListDetails()).setRetrieveMetadata(true);//set "retrieve metadata" option to true
ListBlobOptions listBlobOptions = (new ListBlobOptions()).setDetails(blobListDetails);
blobContainerClient.listBlobs(listsBlobOptions, Duration.ofHours(1000)).forEach(blobItem -> {
log.info(blobItem.getName());
log.info(blobItem.getProperties().getETag());
log.info(String.valueOf(blobItem.getProperties().getLeaseStatus()));
log.info(String.valueOf(blobItem.getMetadata()));
});

最新更新