[英]Azure Blob Storage with Python, create containers but not list them?
[英]How to List the containers in azure blob storage?
我正在开发一个社交网络应用程序。
我想在 azure 存储中为每个加入社交网络的用户(客户端)创建一个容器,这意味着 user1 有一个名为容器 1 的容器,在容器 1 内将有 xml 格式的用户 1 个人资料和个人资料图片用户 1.
同样,对于 user2,将在 azure blob 存储中创建容器 2,然后将用户 2 的配置文件保存为 xml 格式和用户 2 的配置文件图片,就像这样,对于 10 个用户,将有 10 个容器。
如果我想从用户客户端 1 的不同 9 个容器中列出存储在 Azure 存储中的所有 9 个用户的信息,我该怎么做?
我正在使用网络服务,但我面临的挑战是如何收集位于 9 个不同容器中的所有 9 个用户配置文件信息。
以下应该可以解决问题 -
CloudStorageAccount account =
CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
// We need to access blobs now, so create a CloudBlobClient
CloudBlobClient blobClient = account.CreateCloudBlobClient();
IEnumerable<CloudBlobContainer> containers = blobClient.ListContainers();
对于较新版本的 Microsoft.WindowsAzure.Storage ,请使用CloudBlobClient.ListContainersSegmentedAsync
方法的正确变体。 示例用法如下:
private static async Task<IEnumerable<CloudBlobContainer>> ListContainersAsync(CloudBlobClient cloudBlobClient)
{
BlobContinuationToken continuationToken = null;
var containers = new List<CloudBlobContainer>();
do
{
ContainerResultSegment response = await cloudBlobClient.ListContainersSegmentedAsync(continuationToken);
continuationToken = response.ContinuationToken;
containers.AddRange(response.Results);
} while (continuationToken != null);
return containers;
}
上述方法的用法如下:
string connectionString = "<your connection string>";
CloudStorageAccount.TryParse(connectionString, out CloudStorageAccount storageAccount);
if (storageAccount == null)
{
Console.WriteLine("Connection string did not work");
}
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
var containers = await ListContainersAsync(cloudBlobClient);
或者,您可以创建一个扩展方法,如下所示:
public static class CloudBlobClientExtension
{
public static async Task<IEnumerable<CloudBlobContainer>> ListContainersAsync(this CloudBlobClient cloudBlobClient)
{
BlobContinuationToken continuationToken = null;
var containers = new List<CloudBlobContainer>();
do
{
ContainerResultSegment response = await cloudBlobClient.ListContainersSegmentedAsync(continuationToken);
continuationToken = response.ContinuationToken;
containers.AddRange(response.Results);
} while (continuationToken != null);
return containers;
}
}
上述扩展方法的用法如下:
string connectionString = "<your connection string>";
CloudStorageAccount.TryParse(connectionString, out CloudStorageAccount storageAccount);
if (storageAccount == null)
{
Console.WriteLine("Connection string did not work");
}
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
IEnumerable<CloudBlobContainer> containers = await cloudBlobClient.ListContainersAsync();
更多详情请参考MSDN和Balkan 的博客
对于较旧的 Azure 存储版本,请使用CloudBlobClient.ListContainers
方法。 示例用法如下:
string connectionString = "<your connection string>";
CloudStorageAccount.TryParse(connectionString, out CloudStorageAccount storageAccount);
if (storageAccount == null)
{
Console.WriteLine("Connection string did not work");
}
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
var containers = cloudBlobClient.ListContainers();
CloudStorageAccount account =
CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
// We need to access blobs now, so create a CloudBlobClient
var blobClient = account.CreateCloudBlobClient();
IEnumerable<CloudBlobContainer> containers = blobClient.ListContainers();
// This will return you list of containers
var containerList = containers.Select(e => e.Name).Tolist();
using Azure;
using Azure.Storage.Blobs;
BlobServiceClient blobServiceClient = new BlobServiceClient(azStorageConnString);
var containerList = blobServiceClient.GetBlobContainers();
foreach (var container in containerList)
// doImportantWork
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.