检查Azure存储中是否存在Blob

我有一个非常简单的问题(我希望!) - 我只想知道在特定的容器中是否存在一个blob(带有我定义的名称)。 如果它存在,我会下载它,如果它不存在,我会做其他事情。

我已经在intertubes上进行了一些搜索,显然曾经有一个叫做DoesExist的函数或者类似的东西......但是和许多Azure API一样,这个似乎不再存在(或者如果是的话,非常巧妙的伪装名字)。


新的API具有.Exists()函数调用。 只要确保使用GetBlockBlobReference ,它不会执行对服务器的调用。 它使功能如下所示:

public static bool BlobExistsOnCloud(CloudBlobClient client, 
    string containerName, string key)
{
     return client.GetContainerReference(containerName)
                  .GetBlockBlobReference(key)
                  .Exists();  
}

注意:此答案现在已过时。 请查看Richard的答案,以便检查是否存在

不,你不会错过简单的东西......我们在新的StorageClient库中隐藏了这种方法做得很好。 :)

我刚刚写了一篇博文来回答你的问题:http://blog.smarx.com/posts/testing-existence-of-a-windows-azure-blob。

简短的回答是:使用CloudBlob.FetchAttributes(),它对blob执行HEAD请求。


似乎跛脚你需要捕捉一个异常来测试它是否存在。

public static bool Exists(this CloudBlob blob)
{
    try
    {
        blob.FetchAttributes();
        return true;
    }
    catch (StorageClientException e)
    {
        if (e.ErrorCode == StorageErrorCode.ResourceNotFound)
        {
            return false;
        }
        else
        {
            throw;
        }
    }
}
链接地址: http://www.djcxy.com/p/66099.html

上一篇: Checking if a blob exists in Azure Storage

下一篇: Restler not accepting boolean false