tob*_*int 110
Windows Azure不提供层次容器的概念,但它提供了一种通过约定和API遍历层次结构的机制.所有容器都存储在同一级别.您可以通过使用blob名称的命名约定来获得simliar功能.
例如,您可以创建一个名为"content"的容器,并在该容器中创建具有以下名称的blob:
content/blue/images/logo.jpg
content/blue/images/icon-start.jpg
content/blue/images/icon-stop.jpg
content/red/images/logo.jpg
content/red/images/icon-start.jpg
content/red/images/icon-stop.jpg
Run Code Online (Sandbox Code Playgroud)
请注意,这些blob是针对"内容"容器的平面列表.也就是说,使用"/"作为传统的分隔符,为您提供了以层次结构方式遍历这些分隔符的功能.
protected IEnumerable<IListBlobItem>
GetDirectoryList(string directoryName, string subDirectoryName)
{
CloudStorageAccount account =
CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
CloudBlobClient client =
account.CreateCloudBlobClient();
CloudBlobDirectory directory =
client.GetBlobDirectoryReference(directoryName);
CloudBlobDirectory subDirectory =
directory.GetSubdirectory(subDirectoryName);
return subDirectory.ListBlobs();
}
Run Code Online (Sandbox Code Playgroud)
然后您可以按如下方式调用此方法:
GetDirectoryList("content/blue", "images")
Run Code Online (Sandbox Code Playgroud)
请注意使用GetBlobDirectoryReference和GetSubDirectory方法以及CloudBlobDirectory类型而不是CloudBlobContainer.这些提供了您可能正在寻找的遍历功能.
这应该可以帮助您入门.如果这不能回答您的问题,请告诉我:
[感谢Neil Mackenzie的灵感]
Dav*_*gon 10
你指的是blob存储?如果是,则层次结构只是StorageAccount/Container/BlobName.没有嵌套容器.
话虽如此,您可以在blob名称中使用斜杠来模拟URI中的嵌套容器.有关命名详细信息,请参阅MSDN上的这篇文章.
我对tobint的回答很有用,我想添加一些这种情况因为我也需要以同样的方式将我的游戏html上传到Azure存储并创建这个目录:
因此,在您推荐之后,我尝试使用Azure Storage Explorer工具上传我的内容,您可以使用此URL下载工具和源代码:Azure Storage Explorer
首先我试图通过工具上传,但它不允许分层目录上传,因为你不需要:如何在blob容器中创建子目录
最后,我调试了Azure Storage Explorer源代码,并在StorageAccountViewModel.cs文件中编辑了Background_UploadBlobs方法和UploadFileList字段.你可以编辑你想要的东西.我可能犯了拼写错误:/我很抱歉,但这只是我的推荐.
归档时间: |
|
查看次数: |
29861 次 |
最近记录: |