检查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