asp.net 如何获取Azure Blob文件大小

mcdcgff0  于 2023-02-01  发布在  .NET
关注(0)|答案(4)|浏览(147)

我使用Azure blob来存储图像。用户上传这些图像。我想看看每个用户的图像占用了多少空间。我如何在ASP.NET代码背后做到这一点?我可以通过知道它的URI来获得图像文件的大小吗?或者我需要使用一些blob相关的函数吗?

ubof19bj

ubof19bj1#

你需要先获取一个blob的属性。

var blob = _container.GetBlockBlobReference(blobName);
if (blob.Exists())
{
    blob.FetchAttributes();
    return blob.Properties.Length;
}

throw new Exception("Blob doesn't exist");
rmbxnbpk

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

gg0vcinb

gg0vcinb3#

由于Microsoft.Azure.Storage.Blob已被弃用,应该替换为Azure.Storage. Blob,因此有一种新的方法可以实现此目的,您仍然需要获取Blob的属性,然后该属性现在被命名为ContentLength

BlobClient blob = myBlobContainerClient.GetBlobClient(blobName);
if (blob != null){
     var properties = (await blob.GetPropertiesAsync()).Value;
     Console.WriteLine($" {blob.Name}\t{properties.ContentLength}");
}
6tdlim6h

6tdlim6h4#

可以使用BlobDownloadInfoContentLength属性,该属性由BlobClient.DownloadAsync()(或Download())返回。

相关问题