使用 java SDK 将标签添加到 blob

Posted

技术标签:

【中文标题】使用 java SDK 将标签添加到 blob【英文标题】:Add tag to blob using java SDK 【发布时间】:2021-09-27 03:49:39 【问题描述】:

我正在尝试使用 java SDK 将索引标签添加到我在 azure Blob Storage 上的数据。我需要添加标签,以便更轻松地过滤并实施生命周期策略。当我上传一个文件时,我希望该文件添加一个标签键 x 映射一个值 y。我找不到任何有用的 java 文档,我找到的最接近的东西是 C# 中的this。另外,我确实找到了函数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 的新文件的路径。

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

【问题讨论】:

【参考方案1】:

您要使用的方法是uploadWithResponse(BlockBlobSimpleUploadOptions options, Duration timeout, Context context),并使用BlockBlobSimpleUploadOptions.setTags(Map&lt;String,String&gt; tags) 设置标签。

【讨论】:

感谢您的快速回复!我试试看。【参考方案2】:

我已经接受了@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);

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于使用 java SDK 将标签添加到 blob的主要内容,如果未能解决你的问题,请参考以下文章

如何将AWS Java SDK添加到Scala / Play项目

如何使用 Java SDK v12 删除 Blob 文件夹

将 UTF-8 BOM 添加到字符串/Blob

将 Cache-Control 和 Expires 标头添加到 Azure 存储 Blob

提取 MySQL Blob 并添加到 PHP 数组?

尝试上传文件时出现异常