如何在azure存储位置创建子容器

sub*_*ani 61 azure azure-storage azure-storage-blobs

如何在azure存储位置创建子容器.

请告诉我们

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)

请注意使用GetBlobDirectoryReferenceGetSubDirectory方法以及CloudBlobDirectory类型而不是CloudBlobContainer.这些提供了您可能正在寻找的遍历功能.

这应该可以帮助您入门.如果这不能回答您的问题,请告诉我:

[感谢Neil Mackenzie的灵感]

  • 请注意,从SDK 2.0版开始,`GetBlobDirectoryReference`位不起作用.相反,我们可以使用以下内容:`CloudBlobContainer container = cloudBlobClient.GetContainerReference(directoryName);``CloudBlobDirectory subDirectory = container.GetDirectoryReference(subDirectoryName);`etc ... (15认同)
  • 这个概念有PHP实现吗? (2认同)

Dav*_*gon 10

你指的是blob存储?如果是,则层次结构只是StorageAccount/Container/BlobName.没有嵌套容器.

话虽如此,您可以在blob名称中使用斜杠来模拟URI中的嵌套容器.有关命名详细信息,请参阅MSDN上的这篇文章.


Ser*_*maz 5

我对tobint的回答很有用,我想添加一些这种情况因为我也需要以同样的方式将我的游戏html上传到Azure存储并创建这个目录:

  • 游戏\ Beautyshop\index.html在
  • 游戏\ Beautyshop \资产\ apple.png
  • 游戏\ Beautyshop \资产\ aromas.png
  • 游戏\ Beautyshop\customfont.css
  • 游戏\ Beautyshop \的jquery.js

因此,在您推荐之后,我尝试使用Azure Storage Explorer工具上传我的内容,您可以使用此URL下载工具和源代码:Azure Storage Explorer

首先我试图通过工具上传,但它不允许分层目录上传,因为你不需要:如何在blob容器中创建子目录

最后,我调试了Azure Storage Explorer源代码,并在StorageAccountViewModel.cs文件中编辑了Background_UploadBlobs方法和UploadFileList字段.你可以编辑你想要的东西.我可能犯了拼写错误:/我很抱歉,但这只是我的推荐.


Ant*_*ony 5

如果您想从 Azure 门户上传文件:要在容器中创建子文件夹,在上传文件时,您可以转到高级选项并选择上传到文件夹,这将在容器中创建一个新文件夹并将文件上传到那。