Копирование нескольких файлов из хранилища BLOB-объектов Azure

Мы моделируем структуру каталогов в хранилище BLOB-объектов Azure. Я хотел бы иметь возможность копировать все файлы из папки в локальный каталог. Есть ли способ скопировать сразу несколько файлов из хранилища BLOB-объектов, соответствующих шаблону, или мне нужно получать эти файлы по отдельности?


person Aran Mulholland    schedule 31.03.2014    source источник


Ответы (2)


Как вы, возможно, уже знаете, хранилище больших двоичных объектов поддерживает только одноуровневую иерархию: у вас есть контейнеры больших двоичных объектов (папка), и каждый контейнер содержит большие двоичные объекты (файлы). Там нет понятия иерархии папок. Вы создаете иллюзию иерархии папок с помощью того, что называется blob prefix. Например, посмотрите на снимок экрана ниже:

введите описание изображения здесь

На картинке выше вы видите две папки в images контейнере больших двоичных объектов: 16x16 и 24x24. В облаке имена больших двоичных объектов включают эти имена папок. Таким образом, имя файла AddCertificate.png в папке 24x24 в хранилище BLOB-объектов - 24x24/AddCertificate.png.

Теперь, переходя к вашему вопросу, вам все равно нужно будет загружать отдельные файлы, но клиентская библиотека хранилища позволяет вам получить список больших двоичных объектов по префиксу больших двоичных объектов. Поэтому, если вы хотите загрузить все файлы в папке 24x24 (или, другими словами, вы хотите загрузить все большие двоичные объекты с префиксом 24x24), вы должны сначала перечислить эти большие двоичные объекты с префиксом 24x24, а затем загрузить каждый большой двоичный объект по отдельности. На локальном компьютере вы можете создать папку по имени префикса.

person Gaurav Mantri    schedule 31.03.2014
comment
Откуда вы взяли этот контейнер больших двоичных объектов в проводнике Windows? Это доступно только для локального хранилища BLOB-объектов? - person Akash Kava; 31.03.2014
comment
Ой ... это снимок экрана инструмента под названием Azure Management Studio (cerebrata.com). Это настольный инструмент для управления Windows Azure. У них также есть бесплатный инструмент под названием Azure Explorer для управления большими двоичными объектами. - person Gaurav Mantri; 31.03.2014
comment
Спасибо, выглядит хорошо, я бы поинтересовался, дал ли кто-нибудь программу для сетевого диска для управления лазурным или любым другим облачным провайдером. - person Akash Kava; 31.03.2014
comment
Вам повезло :) ... загляните в "Гладинет". Их инструмент позволяет подключить учетную запись облачного хранилища в качестве сетевого диска. Хотя я не пробовал его, поэтому я не знаю, обновляется ли инструмент с учетом последних изменений в хранилище Windows Azure. - person Gaurav Mantri; 31.03.2014

Вы можете ссылаться на приведенный ниже код как на образец справочника ((он написан на javascript, но вы можете легко сопоставить логику с любым языком). Этот код поддерживается Microsoft.

https://github.com/WindowsAzure/azure-sdk-tools-xplat/blob/master/lib/commands/storage.blob._js#L144 https://github.com/WindowsAzure/azure-sdk.-tools-xplat/blob/master/lib/commands/storage.blob._js#L689

Вторая ссылка объясняет, как анализировать префиксы больших двоичных объектов и извлекать из них иерархию папок. Он также показывает, как загрузить большой двоичный объект с помощью нескольких потоков и обеспечить целостность большого двоичного объекта с помощью MD5.

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

if (!fileName) {
  var structure = StorageUtil.getStructureFromBlobName(specifiedBlobName);
  fileName = structure.fileName;
  fileName = utils.escapeFilePath(fileName);
  structure.dirName = StorageUtil.recursiveMkdir(dirName, structure.dirName);
  fileName = path.join(structure.dirName, fileName);
  dirName = '.'; //FileName already contain the dirname
}
person Anu Thomas Chandy    schedule 31.03.2014