我在Blob容器中的azure上有图像文件。所有文件都有唯一的名称。我不得不在名称上搜索这些图像文件,而不需要扩展。例如,我有文件: 英扬留学 345.jpg 122.JPG
当前代码可以搜索我是否提供了文件的完整名称,例如123.PNG。 如何通过123传递它。
代码:ID作为参数传递,它是blob中的文件名:
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("images");
container.CreateIfNotExists();
var blockBlob = container.GetBlockBlobReference(id);
blockBlob.FetchAttributes();
byte[] downloadedImage = new byte[blockBlob.Properties.Length];
blockBlob.DownloadToByteArray(downloadedImage, 0);
var imageBase64 = Convert.ToBase64String(downloadedImage);
答案 0 :(得分:5)
您可以使用接受string prefix
参数的ListBlobs
方法,如下所示:
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("images");
container.CreateIfNotExists();
var blockBlobs = container.ListBlobs(prefix: "123.").OfType<CloudBlockBlob>();
var blockBlob = blockBlobs.First();
blockBlob.FetchAttributes();
byte[] downloadedImage = new byte[blockBlob.Properties.Length];
blockBlob.DownloadToByteArray(downloadedImage, 0);
var imageBase64 = Convert.ToBase64String(downloadedImage);
以上示例将找到123.JPG或123.PNG(或两者)
您将获得一个名称以prefix
开头的所有blob的列表。
答案 1 :(得分:0)
对于新人,你应该这样使用:
var pagesize = 10;
var resultSegment = blobContainerClient.GetBlobsAsync(prefix: "BlobName")
.AsPages(default, pagesize);
// Enumerate the blobs returned for each page.
await foreach (Azure.Page<BlobItem> blobPage in resultSegment)
{
foreach (BlobItem blobItem in blobPage.Values)
{
Console.WriteLine("Blob name: {0}", blobItem.Name);
}
Console.WriteLine();
}