Как создать вспомогательный каталог в контейнере blob
например,
в контейнере blob http://veda.blob.core.windows.net/document/
Если я храню некоторые файлы, это будет
Теперь, как создать подкаталог
Так что я могу хранить файлы
Как создать вспомогательный каталог в контейнере blob
например,
в контейнере blob http://veda.blob.core.windows.net/document/
Если я храню некоторые файлы, это будет
Теперь, как создать подкаталог
Так что я могу хранить файлы
Чтобы добавить к тому, что сказал Эгон, просто создайте свой blob под названием "folder/1.txt", и он будет работать. Нет необходимости создавать каталог.
На самом деле существует только один слой контейнеров. Вы можете фактически создать "файловую систему", такую как многоуровневое хранилище, но на самом деле все будет в 1 слое, в котором он находится.
Для создания виртуальной "файловой системы", такой как хранилище, вы можете иметь имена blob, содержащие "/", чтобы вы могли делать все, что захотите, с помощью способа хранения. Кроме того, замечательно, что вы можете искать blob на виртуальном уровне, предоставляя частичную строку, вплоть до '/'.
Эти две вещи, добавляя "/" к пути и частичную строку для поиска, вместе создают виртуальную "файловую систему".
Есть комментарий от @afr0, спрашивающий, как фильтровать папки.
Существует два способа использования GetDirectoryReference
или циклического перемещения контейнеров и проверки типа. Код ниже находится в С#
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, появляется кнопка "Новая папка", которая позволяет вам создать папку в контейнере. Это фактически виртуальная папка:
Как упоминалось выше @Egon, в BLOB-хранилище нет реального управления папками.
Вы можете получить некоторые возможности файловой системы, используя "/" в имени файла, но это имеет много ограничений (например, что произойдет, если вам нужно переименовать "папку"?).
Как правило, я буду сохранять свои файлы как можно более плоскими в контейнере, и мое приложение будет управлять любой структурой, которую я хочу предоставить конечным пользователям (например, управлять структурой вложенных папок в моей базе данных, иметь записи для каждого файл, ссылающийся на BLOB с использованием имени контейнера и имени файла).
Возникла похожая проблема при попытке попробовать приложение Azure Sample first-serverless.
Вот информация о том, как я решил, удалив\перед $ 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
Вам не нужно создавать подкаталог. Просто создайте контейнер BLOB-объектов и используйте имя файла, например, переменную filename, как показано ниже:
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