获取Blob容器中特定前缀内的所有Uri的名称

本文关键字:Uri 前缀 Blob 获取 | 更新日期: 2023-09-27 18:09:05

我想把所有的东西都放在"10"前缀中,像这样:

https://ideesstorage.blob.core.windows.net/development-fotosproyectos/10/29.jpg

到目前为止,我只能使用这个目录。Uri:

https://ideesstorage.blob.core.windows.net/development-fotosproyectos/10/

下面的代码获取容器中的所有目录,而不是前缀中的文件名,如预期的那样:

        var query = blobContainer.ListBlobs(null, false, BlobListingDetails.None);
        foreach (IListBlobItem item in query)
        {
            if (item.GetType() == typeof(CloudBlobDirectory))
            {
                CloudBlobDirectory directory = (CloudBlobDirectory)item;
                Console.WriteLine("Directory: {0}-{1}", directory.Uri, directory.Prefix);
            }
        }

我想要的是让它在指定的前缀中获得每个文件的Uri。

提前感谢您的时间。

获取Blob容器中特定前缀内的所有Uri的名称

看看下面的代码:

    static void ListBlobsInFolder()
    {
        var account = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
        var blobClient = account.CreateCloudBlobClient();
        var containerName = "<container-name>";
        var folderName = "<folder-name>";
        var container = blobClient.GetContainerReference(containerName);
        var query = container.ListBlobs(prefix:folderName, useFlatBlobListing:true, blobListingDetails:BlobListingDetails.None);
        foreach (var item in query)
        {
            Console.WriteLine(item.Uri);
        }
    }

基本上,您需要将true传递给useFlatBlobListing参数,将name of the folder传递给prefix(在您的情况下为"10")。