不带文件扩展名的 Azure blob 存储的部分文件名搜索
Partial file name Search of Azure blob storage without file extension
我在 Blob 容器中的 Azure 上有图像文件。所有文件都有唯一的名称。我需要在没有扩展名的情况下按名称搜索这些图像文件。例如我有文件:
123.PNG
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);
您可以使用接受 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 的列表。
对于新手,你应该这样使用:
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();
}
我在 Blob 容器中的 Azure 上有图像文件。所有文件都有唯一的名称。我需要在没有扩展名的情况下按名称搜索这些图像文件。例如我有文件: 123.PNG 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);
您可以使用接受 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 的列表。
对于新手,你应该这样使用:
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();
}