获取Azure BlockBlob内容类型

问题描述 投票:2回答:3

我试图从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

c# azure blob containers
3个回答
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的内容类型属性。


2
投票

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

blob.FetchAttributes()

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

blob.Properties.ContentType

0
投票

得到它的另一种方法是GetBlobReferenceFromServerGetBlobReferenceFromServerAsync。这会返回一个ICloudBlob,您可以这样做:

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

注意,这会使服务器往返,如果blob不存在,则会抛出异常。

© www.soinside.com 2019 - 2024. All rights reserved.