Вопрос

Как создать дополнительную каталог в контейнере BLOB

Например,

В моем контейнере BLOB http://veda.blob.core.windows.net/document/

Если я храним некоторые файлы, это будет

http://veda.blob.core.windows.net/document/1.txt.

http://veda.blob.core.windows.net/document/2.txt.

Теперь, как создать дополнительную каталог

http://veda.blob.core.windows.net/document/Folder/

Так что я могу хранить файлы

http://veda.blob.core.windows.net/document/Folder/1.txt.

Это было полезно?

Решение

Чтобы добавить к тому, что сказал Егон, просто создайте BLOB под названием «Папка / 1.ТТКТ», и она будет работать. Нет необходимости создавать каталог.

Другие советы

На самом деле есть только один слой контейнеров. Вы можете практически создать «файловую систему», как слоистые хранилище, но на самом деле все будет в 1 слое, контейнер, в котором оно есть.

Для создания виртуальной «файловой системы», как хранилище, у вас могут иметь имена BLOB, которые содержат A '/', чтобы вы могли делать все, что вам нравится с тем, как вы храните. Кроме того, отличная вещь состоит в том, что вы можете искать BLOB на виртуальном уровне, давая частичную строку до A '/'.

Эти 2 вещи, добавляющие «/» на путь и частичную строку для поиска, вместе создают виртуальную «файловую систему».

Есть комментарий @ afr0, спрашивая, как фильтровать на папках ..

Есть два способа с использованием GetDirectoryReference Или зацикливаться через кабины контейнеров и проверять тип. Код ниже находится в C #

CloudBlobContainer container = blobClient.GetContainerReference("photos");

//Method 1. grab a folder reference directly from the container
CloudBlobDirectory folder = container.GetDirectoryReference("directoryName");

//Method 2. Loop over container and grab folders.
foreach (IListBlobItem item in container.ListBlobs(null, false))
{
    if (item.GetType() == typeof(CloudBlobDirectory))
    {
        // we know this is a sub directory now
        CloudBlobDirectory subFolder = (CloudBlobDirectory)item;

        Console.WriteLine("Directory: {0}", subFolder.Uri);
    }
}

Прочитайте это для более подробного охвата: http://www.codeProject.com/articles/297052/azure-storage-blobs-service -working-with-directori.

В Azure Portal у нас есть вариант ниже при загрузке файла:

enter image description here

Если вы используете Microsoft Azure Storage Explorer, есть кнопка «Новая папка», которая позволяет создать папку в контейнере. Это на самом деле виртуальная папка:

enter image description here

Как упомянуто выше @egon, нет реального управления папками в хранилище BLOB.

Вы можете добиться некоторых функций файловой системы, используя «/» в имени файла, но это имеет много ограничений (например, что происходит, если вам нужно переименовать «папку»?).

Как общее правило, я бы сохранил свои файлы как можно скорее в контейнере, и у меня приложение управляет любой структурой, которую я хочу разоблачить конечным пользователям (например, управлять структурой вложенной папки. в моей базе данных, Имейте запись для каждого файла, ссылаясь на BLOB, используя имя контейнера и имя файла).

Вам не нужно создавать подпункта. Просто создайте контейнер BLOB и используйте имя файла, такое как переменная имя файла Как под код:

string filename = "document/tech/user-guide.pdf";
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(ConnectionString);
CloudBlockBlob blob = cloudBlobContainer.GetBlockBlobReference(filename);
blob.StreamWriteSizeInBytes = 20 * 1024;
blob.UploadFromStream(fileStream); // fileStream is System.IO.Stream

Вот как я делаю это в CoffeeScript на Node.js:

blobService.createBlockBlobFromText 'containerName', (path + '$$$.$$$'), '', (err, result)->
    if err
        console.log 'failed to create path', err
    else
        console.log 'created path', path, result

Получил подобную проблему, пытаясь образец Azure First-Serverless-приложение.
Вот информация о том, как я решил, удаляя перед $ web.

Примечание: $ Web-контейнер был создан автоматически во время включения статического веб-сайта. Никогда не видел $ root Continer где угодно.

//getting Invalid URI error while following tutorial as-is
az storage blob upload-batch -s . -d \$web --account-name firststgaccount01

//Remove "\" @destination param
az storage blob upload-batch -s . -d $web --account-name firststgaccount01
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top