我使用Azure blob来存储图像。用户上传这些图像。我想看看每个用户的图像占用了多少空间。我如何在ASP.NET代码背后做到这一点?我可以通过知道它的URI来获得图像文件的大小吗?或者我需要使用一些blob相关的函数吗?
ubof19bj1#
你需要先获取一个blob的属性。
var blob = _container.GetBlockBlobReference(blobName); if (blob.Exists()) { blob.FetchAttributes(); return blob.Properties.Length; } throw new Exception("Blob doesn't exist");
rmbxnbpk2#
在这里回答scala/java,以防有人卡住。为了得到blob的大小,你可以使用下面的代码:
val blob: CloudBlockBlob = container.getBlockBlobReference(blobPath) blob.downloadAttributes() blob.getProperties.getLength
确保您确实调用了downloadAttributes,否则属性将为空。有关详细信息,请参阅此文档https://learn.microsoft.com/en-us/java/api/com.microsoft.azure.storage.blob.cloudblockblob?view=azure-java-legacy
gg0vcinb3#
由于Microsoft.Azure.Storage.Blob已被弃用,应该替换为Azure.Storage. Blob,因此有一种新的方法可以实现此目的,您仍然需要获取Blob的属性,然后该属性现在被命名为ContentLength:
ContentLength
BlobClient blob = myBlobContainerClient.GetBlobClient(blobName); if (blob != null){ var properties = (await blob.GetPropertiesAsync()).Value; Console.WriteLine($" {blob.Name}\t{properties.ContentLength}"); }
6tdlim6h4#
可以使用BlobDownloadInfo的ContentLength属性,该属性由BlobClient.DownloadAsync()(或Download())返回。
BlobDownloadInfo
BlobClient.DownloadAsync()
Download()
4条答案
按热度按时间ubof19bj1#
你需要先获取一个blob的属性。
rmbxnbpk2#
在这里回答scala/java,以防有人卡住。为了得到blob的大小,你可以使用下面的代码:
确保您确实调用了downloadAttributes,否则属性将为空。
有关详细信息,请参阅此文档https://learn.microsoft.com/en-us/java/api/com.microsoft.azure.storage.blob.cloudblockblob?view=azure-java-legacy
gg0vcinb3#
由于Microsoft.Azure.Storage.Blob已被弃用,应该替换为Azure.Storage. Blob,因此有一种新的方法可以实现此目的,您仍然需要获取Blob的属性,然后该属性现在被命名为
ContentLength
:6tdlim6h4#
可以使用
BlobDownloadInfo
的ContentLength
属性,该属性由BlobClient.DownloadAsync()
(或Download()
)返回。