Как создать подкаталог в контейнере больших двоичных объектов
например,
в моем контейнере больших двоичных объектов http://veda.blob.core.windows.net/document/
Если я сохраню несколько файлов, это будет
Теперь, как создать подкаталог
Чтобы я мог хранить файлы
На самом деле есть только один слой контейнеров. Вы можете виртуально создать «файловую систему», подобную многоуровневому хранилищу, но на самом деле все будет в одном слое, в контейнере, в котором оно находится.
Для создания виртуальной «файловой системы», такой как хранилище, у вас могут быть имена больших двоичных объектов, содержащие '/', чтобы вы могли делать все, что захотите, с тем, как вы храните. Кроме того, замечательно то, что вы можете искать blob-объект на виртуальном уровне, задавая частичную строку до символа '/'.
Эти две вещи, добавление '/' к пути и частичной строки для поиска, вместе создают виртуальное хранилище «файловой системы».
источник
Есть комментарий @ 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 у нас есть опция ниже при загрузке файла:
источник
Если вы используете Microsoft Azure Storage Explorer , есть кнопка «Новая папка», которая позволяет вам создать папку в контейнере. На самом деле это виртуальная папка:
источник
Вам не нужно создавать подкаталог. Просто создайте контейнер больших двоичных объектов и используйте имя файла, например имя файла переменной, как показано ниже:
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
источник
Как упоминал @Egon выше, в хранилище больших двоичных объектов нет реального управления папками.
Вы можете добиться некоторых функций файловой системы, используя '/' в имени файла, но это имеет много ограничений (например, что произойдет, если вам нужно переименовать «папку»?).
Как правило, я бы сохранил свои файлы в контейнере как можно более плоскими , и мое приложение управляло бы любой структурой, которую я хочу предоставить конечным пользователям (например, управлять вложенной структурой папок в моей базе данных , иметь запись для каждого file, ссылаясь на большой двоичный объект с помощью имени контейнера и имени файла).
источник
Возникла аналогичная проблема при попытке попробовать первое бессерверное приложение Azure Sample .
Вот информация о том, как я решил, удалив \ перед $ web.
Примечание. Контейнер $ web был создан автоматически при включении статического веб-сайта. Никогда нигде не видел контейнер $ root.
//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
источник
Вот как я это делаю в 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
источник
C#