Как создать дополнительный контейнер в хранилище azure


Как создать дополнительный контейнер в хранилище azure.

пожалуйста, дайте нам знать

4   51   2010-07-06 10:02:55

4 ответа:

Windows Azure не предоставляет концепцию heirarchical контейнеров, но она предоставляет механизм для обхода heirarchy по соглашению и API. Все контейнеры хранятся на одном уровне. Вы можете получить функциональность simliar, используя соглашения об именах для имен больших двоичных объектов.

например, вы можете создать контейнер с именем "content" и создать большие двоичные объекты со следующими именами в этом контейнере:

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

Примечание что эти капли являются плоскими список против вашего контейнера "содержимое". Тем не менее, используя "/" в качестве обычного разделителя, вы получаете функциональность для обхода их в наследственной манере.

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 методы и CloudBlobDirectory типа вместо CloudBlobContainer. Они обеспечивают функциональность обхода, которую вы, вероятно, ищете.

Это должно помочь вам начать работу. Позвольте мне знать, если это не ответ на ваш вопрос:

[ спасибо Нил Макензи для вдохновения ]

вы имеете в виду хранилище больших двоичных объектов? Если это так, иерархия - это просто StorageAccount / Container / BlobName. Вложенных контейнеров не существует.

сказав это, вы можете использовать слеши в имени большого двоичного объекта для имитации вложенных контейнеров в URI. Смотрите эта статья на MSDN для именования детали.

Я aggree с tobint ответ, и я хочу добавить что-то в этой ситуации, потому что я также Мне нужно так же загрузить мои игры html в хранилище Azure с помощью create this Directory:

  • игры\Beautyshop\index.HTML-код
  • игры\Beautyshop\активы\apple.png
  • игры\Beautyshop\активы\ароматы.png
  • игры\Beautyshop\customfont.css
  • игры\Beautyshop\jquery.js

поэтому после ваших рекомендаций я попытался загрузите мой контент с помощью инструмента Azure Storage Explorer, и вы можете загрузить инструмент и исходный код с помощью этого url-адреса : Azure Storage Explorer

прежде всего, я попытался загрузить через инструмент, но он не позволяет загружать иерархический каталог, потому что вам не нужно : как создать подкаталог в контейнере blob

наконец, я отлаживаю исходный код Azure Storage Explorer и редактирую метод Background_UploadBlobs и поле UploadFileList в StorageAccountViewModel.cs-файл. Вы можете редактировать его, что вы хотите.Я, возможно, сделал орфографические ошибки :/ мне очень жаль, но это только моя рекомендация.

пример кода

string myfolder = "<folderName>";
string myfilename = "<fileName>";
string fileName = String.Format("{0}/{1}.csv", myfolder, myfilename);
CloudBlockBlob blob = container.GetBlockBlobReference(fileName);