如何在azure色的存储位置创build子容器
如何在azure色的存储位置创build子容器。
请告诉我们
Windows Azure没有提供容器的概念,但是它确实提供了一种按惯例和API来遍历层次结构的机制。 所有的容器都存储在同一个级别。 您可以通过为您的blob名称使用命名约定来获得simliarfunction。
例如,您可以创build一个名为“content”的容器,并在该容器中使用以下名称创buildblob:
content/bluehttp://img.dovov.comlogo.jpg content/bluehttp://img.dovov.comicon-start.jpg content/bluehttp://img.dovov.comicon-stop.jpg content/redhttp://img.dovov.comlogo.jpg content/redhttp://img.dovov.comicon-start.jpg content/redhttp://img.dovov.comicon-stop.jpg
请注意 ,这些blob是针对“内容”容器的平面列表。 也就是说,使用“/”作为常规分隔符,为您提供了以分层方式遍历这些function的function。
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(); }
然后你可以这样调用它:
GetDirectoryList("content/blue", "images")
请注意使用GetBlobDirectoryReference和GetSubDirectory方法,而使用CloudBlobDirectorytypes而不使用CloudBlobContainer 。 这些提供了您可能正在寻找的遍历function。
这应该可以帮助你开始。 让我知道如果这不能回答你的问题:
[感谢Neil Mackenzie的灵感]
你是指blob存储? 如果是这样,层次结构就是StorageAccount / Container / BlobName。 没有嵌套的容器。
话虽如此,你可以在blob名称中使用斜杠来模拟URI中的嵌套容器。 有关命名详细信息,请参阅MSDN上的这篇文章 。
我同意tobint答案,我想添加这种情况,因为我也需要以同样的方式上传我的游戏html到Azure存储创build此目录:
- 游戏\ Beautyshop \ index.html在
- 游戏\ Beautyshop \资产\ apple.png
- 游戏\ Beautyshop \资产\ aromas.png
- 游戏\ Beautyshop \ customfont.css
- 游戏\ Beautyshop \的jquery.js
因此,在您的build议之后,我尝试使用Azure存储浏览器工具上传我的内容,并且可以使用此URL下载工具和源代码: Azure存储资源pipe理器
首先,我尝试通过工具上传,但它不允许分层目录上传,因为你不需要: 如何在blob容器中创build子目录
最后,我debuggingAzure存储资源pipe理器源代码,并在StorageAccountViewModel.cs文件中编辑了Background_UploadBlobs方法和UploadFileList字段。 你可以编辑它你想要的。我可能拼写错误:/我很抱歉,但这只是我的build议。
示例代码
string myfolder = "<folderName>"; string myfilename = "<fileName>"; string fileName = String.Format("{0}/{1}.csv", myfolder, myfilename); CloudBlockBlob blob = container.GetBlockBlobReference(fileName);