使用 java SDK 将标签添加到 blob

Add tag to blob using java SDK

我正在尝试使用 java SDK 将索引标记添加到我在 Azure Blob 存储上的数据。我需要添加标签,以便更轻松地进行过滤并实施生命周期策略。当我上传文件时,我希望为该文件添加映射值 y 的标签键 x。我没能找到任何有用的 java 文档,我找到的最接近的东西是 this in C#. Also, I did find the function setTags (this too),它看起来像我想要的,但我一直无法让它工作(该文件似乎是在没有标签的情况下上传的)。我试过以下代码:

String connectStr = System.getenv("AZURE_STORAGE_CONNECTION_STRING");
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();
BlobContainerClient container = blobServiceClient.getBlobContainerClient("tcpblobstorage");
BlobClient blobClient = container.getBlobClient(path + fileName);
Map<String, String> map = new HashMap<>();
map.put("Client", "Client");
blobClient.setTags(map);
blobClient.upload(is, length, true);

注意:path + fileName是即将上传到azure的新文件的路径。

任何人对我可能做错的事情有任何指示或想法吗?

您希望使用的方法是 uploadWithResponse(BlockBlobSimpleUploadOptions options, Duration timeout, Context context) and set tags using BlockBlobSimpleUploadOptions.setTags(Map<String,String> tags)

我已经接受了@Gaurav 的回答,但是如果有人来找它,这里是更新后的代码:

String connectStr = System.getenv("AZURE_STORAGE_CONNECTION_STRING");
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();
BlobContainerClient container = blobServiceClient.getBlobContainerClient("tcpblobstorage");
BlobClient blobClient = container.getBlobClient(path + fileName);
Map<String, String> map = new HashMap<>();
map.put("Client", "Client");
BlockBlobSimpleUploadOptions options = new BlockBlobSimpleUploadOptions(is, length).setTags(map);
blobClient.getBlockBlobClient().uploadWithResponse(options, Duration.ofSeconds(30L), Context.NONE);

另一种选择是在上传后使用 setTags。这对我有用。