我试图从Azure BlockBlob获取“内容类型”。这似乎不起作用。
如您所见,此文件的“内容类型”是“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");
如图所示,它总是返回空白:
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的内容类型属性。
要获取blob属性,您必须首先获取属性:
blob.FetchAttributes()
然后,您将能够通过以下方式获取内容类型:
blob.Properties.ContentType
得到它的另一种方法是GetBlobReferenceFromServer
或GetBlobReferenceFromServerAsync
。这会返回一个ICloudBlob
,您可以这样做:
var blob = container.GetBlobReferenceFromServer("009fc790-2e8e-4b59-bbae-3b5e2e845a3b");
string contentType = blob.Properties.ContentType;
注意,这会使服务器往返,如果blob不存在,则会抛出异常。