【问题标题】:C# Azure Blob Storage / Get blob sizeC# Azure Blob 存储/获取 blob 大小
【发布时间】:2018-05-07 07:55:57
【问题描述】:

我已经开始研究 Azure 存储。我已经实现了创建/删除容器、创建/删除/isExist blob 功能。但我很惊讶从 Azure 存储中找到当前的 Blob 大小。

我做了很多研究,但我无法找到任何合理的解决方案。

这是我获取 Blob 大小的函数:

public long GetBlockBlobSize(string containerName, string blobName)
        {
            try
            {
                CloudBlobContainer container = _blobClient.GetContainerReference(containerName);
                var blockBlob = container.GetBlockBlobReference(blobName);
                return blockBlob.Properties.Length;
            }
            catch (Exception ex)
            {
                throw;
            }
        }

blockBlob.Properties.Length 值为 -1。

  • 这种方法有什么问题吗?
  • 有更好的方法吗?

谢谢!

【问题讨论】:

    标签: c# azure azure-storage


    【解决方案1】:

    请将您的代码更改为:

    public long GetBlockBlobSize(string containerName, string blobName)
    {
        try
        {
            CloudBlobContainer container = _blobClient.GetContainerReference(containerName);
            var blockBlob = container.GetBlockBlobReference(blobName);
            blockBlob.FetchAttributes();
            return blockBlob.Properties.Length;
        }
        catch (Exception ex)
        {
            throw;
        }
    }
    

    本质上,您的代码只是在客户端创建CloudBlockBlob 的实例,因此使用默认值初始化属性。当您调用FetchAttributes 方法时,将从 Azure 存储中获取 blob 的实际属性。

    【讨论】:

    • 哦,谢谢!我错过了FetchAttributes() 函数调用。
    猜你喜欢
    • 2021-06-13
    • 1970-01-01
    • 2018-11-17
    • 2016-11-26
    • 2015-11-04
    • 2019-03-08
    • 1970-01-01
    • 2012-03-02
    • 2016-03-04
    相关资源
    最近更新 更多