azure - 如何检查 azure block blob 中是否有数据

标签 azure azure-blob-storage

我正在尝试找到一种更优雅的方法来检查我创建的 blob 存储中是否有任何内容。

我有一个从 blob 存储读取的服务。我基本上需要确保当我的服务重新启动时,它会在正常运行之前检查 blob 中是否有任何内容需要读取和处理。

我似乎找不到检查 blockblob 是否为空的方法。我想出了一种方法来做到这一点,但我想知道是否有更优雅的方法:

这是我的解决方案,只需检查您是否能够下载任何内容。当然可以..

public bool IsBlobEmpty()
{
    string text;
    using (var memoryStream = new MemoryStream())
    {
        blockBlob.DownloadToStream(memoryStream);
        text = System.Text.Encoding.UTF8.GetString(memoryStream.ToArray());
        if (text.Length > 0)
        {
            return false;
        }
    }
    return true;
}

最佳答案

您可以使用 Azure 存储 Blob API 获取 Blob 的元数据信息并检查其大小 - https://msdn.microsoft.com/en-us/library/azure/dd179394.aspx

来自服务器的响应 header 包含 Content-Length 属性

x-ms-meta-Name: myblob.txt
x-ms-meta-DateUploaded: Sun, 23 Oct 2013 18:45:18 GMT
x-ms-blob-type: BlockBlob
x-ms-lease-status: unlocked
x-ms-lease-state: available
Content-Length: 11
Content-Type: text/plain; charset=UTF-8
Date: Sun, 23 Oct 2013 19:49:38 GMT
ETag: "0x8CAE97120C1FF22"
Accept-Ranges: bytes
x-ms-version: 2013-08-15
Last-Modified: Wed, 23 Oct 2013 19:49
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.

关于azure - 如何检查 azure block blob 中是否有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30920275/

相关文章:

c# - CosmosDB SQL API : Change property Name - (Partial Updates .Net SDK 或循环)

azure - 错误 1000 : AFx Library library exception: Type Decimal is not supported

azure - 当尝试打开 Azure 门户中大量存在的机器人服务时,为什么 Azure 为 "Unable to find the bot with the specified id"?

C# 删除 Azure Blob - 无效的 Uri

azure-devops - Azure 上 S3 的 Fluentd 守护程序集替代方案 (Blob)

azure - 在 azure blob 之间移动文件而不下载

azure - 服务结构: There was an error during image download

azure - 使用 Terraform 使用 Key Vault 维护的 RSA key 创建 AKS

javascript - Azure Blob Put 命令在以前工作时生成错误

azure - 跨多个 Azure 数据磁盘分区的数据库的性能