列出所有容器和 Blob
本文关键字:Blob | 更新日期: 2023-09-27 18:36:11
我正在使用容器和 blob 处理 Azure 本地开发存储。我希望能够在列表框中显示所有容器和 Blob,就像本地开发存储的树视图一样。这是我的代码:
public List<string> ListContainer()
{
List<string> blobs = new List<string>();
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("AzureStorageConnectionString"));
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
//Get the list of the blob from the above container
IEnumerable<CloudBlobContainer> containers = blobClient.ListContainers();
foreach (CloudBlobContainer item in containers)
{
blobs.Add(string.Format("{0}", item.Uri.Segments[2]));
}
return blobs;
}
在这里,我展示了我所有的容器。我需要显示每个容器具有的所有 blob 以及子文件夹。
你正在迭代容器,而不是容器中的 blob。在每个容器上,需要调用 ListBlob。
您的代码将如下所示:
foreach (CloudBlobContainer item in containers)
{
foreach (IListBlobItem blob in item.ListBlobs()){
blobs.Add(string.Format("{0}", blob.Uri.Segments[2]));
}
}
很高兴在这里见到你。不需要列表容器,需要创建容器和列表 Blob。首先,我已经告诉过您,您需要为本地存储创建一个本地包含,如果没有,在哪里可以存储这些文件?可以使用container.createIfNotExists();
到新文件,并将文件上传到其 Blob。或者从 azurestorageexplorer.codeplex.com 下载azurestorageexplorer
,在azurestorageexplorer
中创建本地容器。
这是我的简单例子:
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
ListBox1.DataSource =ListBlob("mycontainer");
ListBox1.DataBind();
}
public List<string> ListBlob(string folder)
{
List<string> blobs = new List<string>();
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference(folder);
// Loop over items within the container and output the length and URI.
foreach (IListBlobItem item in container.ListBlobs(null, false))
{
if (item.GetType() == typeof(CloudBlockBlob))
{
CloudBlockBlob blob = (CloudBlockBlob)item;
blobs.Add(string.Format("Block blob of length {0}: {1}", blob.Properties.Length, blob.Uri));
}
else if (item.GetType() == typeof(CloudPageBlob))
{
CloudPageBlob pageBlob = (CloudPageBlob)item;
blobs.Add(string.Format("Page blob of length {0}: {1}", pageBlob.Properties.Length, pageBlob.Uri));
}
else if (item.GetType() == typeof(CloudBlobDirectory))
{
CloudBlobDirectory directory = (CloudBlobDirectory)item;
blobs.Add(string.Format("Directory: {0}", directory.Uri)); ;
}
}
return blobs;
}
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ListBox2.DataSource = ListBlob("mycontainer01");
ListBox2.DataBind();
}
}
确保在ListBox1上设置AutoPostBack="True",请参阅更多信息表格:https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/。如果您有任何问题,请保持联系。