从Windows Azure Blob中的“子文件夹”输出图像

时间:2015-04-03 17:25:20

标签: c# asp.net .net azure azure-storage-blobs

我有一个名为systemdesign的容器,它有几个子文件夹,例如dfd usecase和其他UML设计工具名称。我想要显示特定"文件夹的图像"例如dfd,而不是在此容器中找到的所有图像。

下面是一些截图,以及围绕此部分的部分代码。请不要介意那些只是测试数据的图像的性质。

http://i.imgur.com/fVs1SZk.png [显示所有内容而不是容器] 编辑:例如在文件夹dfd中应该只有一张图片,第二个文件夹应该是另一张图片。

http://i.imgur.com/kMyBLca.png [我的"目录"分段]

影响上述内容的代码:

SystemDesignController

// GET: SystemDesign
public ActionResult Index()
{
    StorageCredentials credentials = new StorageCredentials(storagename, accountkey);
    CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);

    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    CloudBlobContainer storageContainer = blobClient.GetContainerReference("systemdesign");

    Models.SystemDesignModel blobsList = new Models.SystemDesignModel(storageContainer.ListBlobs(useFlatBlobListing: true));


    return View(blobsList);
}

SystemDesignModel.cs //此类包含模型,最终在视图中用于显示图像

  public class SystemDesignModel
    {
        public SystemDesignModel() : this(null)
        {
            Files = new List<SystemDesign>();
        }

        public SystemDesignModel(IEnumerable<IListBlobItem> list)
        {
            Files = new List<SystemDesign>();

            if (list != null && list.Count<IListBlobItem>() > 0)
            {
                foreach (var item in list)
                {
                    SystemDesign info = SystemDesign.CreateImageFromIListBlob(item);
                    if (info != null)
                    {
                        Files.Add(info);
                    }
                }
            }
            else
            {

            }
        }
        public List<SystemDesign> Files { get; set; }
    }

index.cshtml 部分代码对于影响此内容的视图

@foreach (var item in Model.Files)
{
        <a href="@item.URL"><img src="@item.URL" height="128" width="128"/></a>
}

我现在尝试做的事情:

1)我尝试将CloudBlobContainer storageContainer = blobClient.GetContainerReference("systemdesign");systemdesign更改为dfd,但如果条件

,它会在SystemDesignModel.cs中向我发出404和storageException

2)尝试将useFlatBlobListing作为false,但不输出任何内容。

知道如何根据我想要的部分输出一个文件夹吗?

由于

1 个答案:

答案 0 :(得分:2)

在容器中列出blob时,您可以传递blob prefix,它基本上是文件夹的名称(在您的示例中为dfd,usecase等)。然后你只会看到该文件夹​​中的blob。以下是文档的链接:https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.blob.cloudblobcontainer.listblobs.aspx