Як створити підкаталог у контейнері BLOB
наприклад,
у моєму BLOB-контейнері http://veda.blob.core.windows.net/document/
Якщо я зберігаю деякі файли, це буде
Тепер, як створити підкаталог
Щоб я міг зберігати файли
Як створити підкаталог у контейнері BLOB
наприклад,
у моєму BLOB-контейнері http://veda.blob.core.windows.net/document/
Якщо я зберігаю деякі файли, це буде
Тепер, як створити підкаталог
Щоб я міг зберігати файли
Відповіді:
Щоб додати те, що сказав Егон, просто створіть свою крапку під назвою "folder / 1.txt", і вона буде працювати. Не потрібно створювати каталог.
Насправді є лише один шар контейнерів. Ви можете віртуально створити "файлову систему" на зразок шаруватого сховища, але насправді все буде в 1 шарі - контейнері, в якому він знаходиться.
Для створення такої віртуальної "файлової системи", як сховище, ви можете мати імена 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
Якщо ви використовуєте Microsoft Azure Storage Explorer , є кнопка "Нова папка", яка дозволяє створити папку в контейнері. Це насправді віртуальна папка:
Вам не потрібно створювати підкаталог. Просто створіть контейнер 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
Як згадувалось вище @Egon, справжнє управління папками у сховищі BLOB не існує.
Ви можете досягти деяких функцій файлової системи, використовуючи '/' в назві файлу, але це має багато обмежень (наприклад, що трапиться, якщо вам потрібно перейменувати "папку"?).
Як загальне правило, я зберігав би свої файли якомога рівніше в контейнері, і моє додаток би керувало будь-якою структурою, яку я хочу представити кінцевим користувачам (наприклад, керувати структурою вкладених папок у моїй базі даних , мати запис для кожного файл, посилаючись на BLOB, використовуючи ім'я контейнера та ім'я файлу).
Отримав подібну проблему під час випробування першого безсерверного додатка 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#