获取Azure BlockBlob内容类型

时间:2016-11-18 14:51:35

标签: c# azure blob containers

我想获得"内容类型"来自Azure BlockBlob。这似乎不起作用。

enter image description here

此文件"内容类型"是" image / jpeg"正如你看到的。

            var cloudConn = System.Configuration.ConfigurationManager.ConnectionStrings["StoreAccount"].ConnectionString;

            var storageAccount = CloudStorageAccount.Parse(cloudConn);
            var blobClient = storageAccount.CreateCloudBlobClient();

            var container = blobClient.GetContainerReference("containername");

            var blocBlob = container.GetBlockBlobReference("009fc790-2e8e-4b59-bbae-3b5e2e845a3b");

如图所示,它总是返回空白:

enter image description here

3 个答案:

答案 0 :(得分:4)

var blocBlob = container.GetBlockBlobReference("009fc790-2e8e-4b59-bbae-3b5e2e845a3b");

上面的代码只是创建CloudBlockBlob的实例,并使用默认属性对其进行初始化。您需要获取blob属性(如上面注释中包含的答案中所述),然后您将看到填充的属性。要获取blob属性,您需要调用FetchAttributes()方法。

var blocBlob = container.GetBlockBlobReference("009fc790-2e8e-4b59-bbae-3b5e2e845a3b");
blocBlob.FetchAttributes();

然后你应该能够看到blob的内容类型属性。

答案 1 :(得分:2)

要获取blob属性,您必须先获取属性:

blob.FetchAttributes()

然后,您将能够通过以下方式获取内容类型:

blob.Properties.ContentType

答案 2 :(得分:0)

另一种获取方法是GetBlobReferenceFromServerGetBlobReferenceFromServerAsync。这将返回一个ICloudBlob,您可以执行以下操作:

var blob = container.GetBlobReferenceFromServer("009fc790-2e8e-4b59-bbae-3b5e2e845a3b");
string contentType = blob.Properties.ContentType;

请注意,这会使服务器往返,如果blob不存在,它将引发异常。