如何解决查找Azure Blob存储中某个路径下方的所有Blob
我正在尝试列出所有以特定路径和文件名开头的Blob。
我有这条路径:"files/folder1/folder2/abcdef"
这些文件存在
`"files/folder1/folder2/abcdef_100_100.jpg"`
`"files/folder1/folder2/abcdef_200_200.jpg"`
`"files/folder1/folder2/abcdef_800_600.jpg"`
请注意,它们都以相同的开头开头,只是文件名的结尾不同。我不知道存在什么结局,只是很可能会有不止一个。
对于具有完整路径的单个文件,此代码非常有用。
CloudBlockBlob cloudBlockBlob = _blobContainer.GetBlockBlobReference(fileName);
到目前为止,我已经尝试并失败了以下代码,以获取与目录和文件名开头匹配的所有文件:
var imageFiles = _blobContainer.ListBlobs(startingPath,true,BlobListingDetails.None);
和
var blobDirectory = _blobContainer.GetDirectoryReference(startingPath);
var imageFiles = blobDirectory .ListBlobs();
这两个都返回空结果。
我应该如何做到这一点?
P.S。不得对客户端数据进行过滤。将有成千上万个文件。
P.P.S如果必须过滤最后一个文件夹(folder2
)的内容,那么该级别的每个文件夹中的文件少于100个。
更新1 这也行不通。
// returns files/folder1/folder2
var dirPath = System.IO.Path.GetDirectoryName(startingPath);
var ss = _blobContainer.GetDirectoryReference(dirPath);
var imageFiles = ss.ListBlobs();
解决方法
ListBlobs
应该按照您期望的方式工作。确保您不区分大小写,并且容器名称的值正确。
完整示例:
var acc = Microsoft.Azure.Storage.CloudStorageAccount.Parse("connstring");
var blobClient = acc.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("files"); // might also be different in your case,not sure with the info in the question
var blobs = container.ListBlobs("folder1/folder2/abcdef",true); // make sure to not put the container name here
foreach (var blob in blobs)
{
Console.WriteLine(blob.Uri);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。