2013-07-02 2 views
2

Я хранения файлов изображений, как капли в Azure Storage со следующим именования:Как работает разделитель в хранилище Azure Blob?

directory/image-name 

При попытке извлечь сгустки с помощью BlobService.listBlobs(container, options, callback) в Javascript на сервере, я использую:

var options = { "prefix":directory } 

и он получает обратно только сгустки, которые начинаются с именем каталога, как я ожидал, но я думал, что я хотел бы также иметь возможность использовать:

var options = { "delimiter":"/", "prefix":directory } 

и вернуть те же самые капли, возможно, без префикса в их именах. Вместо этого я ничего не получаю. Каков правильный способ использования разделителя? Какой смысл иметь его, если вы получаете предметы, которые хотите, используя только префикс?

+0

Правильно ли я понимаю, что вы используете node.js? –

+0

Это правильно. – Curyous

ответ

1

Я не использовал REST API, с JavaScript, но я думаю, что вам не хватает в косую черту после имени каталога, так что я предлагаю:

var options = { "delimiter":"/", "prefix":directory+"/" } 

Windows Azure Storage не действительно каталогов, в базовой реализации все капли в контейнере представляют собой только плоский список, а имена blob (а не имена контейнеров) могут содержать косые черты. Разделитель является вариантом при вызове API REST ListBlobs, который позволяет вам моделировать поведение, подобное каталогу. Если опция разделителя включена, а часть имени blob за префиксом содержит разделитель, ответ будет опустить, что blob.

Для иллюстрации, позволяет назвать некоторые сгустки, предполагая, что все они в том же контейнере https://myaccount.blob.core.windows.net/mycontainer «:

a/b/extra.txt 
a/bloba.txt 
a/blobb.txt 
other.txt 

Итак, если вы вызываете listBlobs на этот контейнер с приставкой„а /“и без указания разделитель, он вернет первые три имени, потому что все они имеют префикс «a /».

Если вместо этого вы вызываете listBlob с тем же префиксом «a /» и устанавливаете разделитель на «/», вы получаете только два средних имени, служба не оставляет файл a/b/extra.txt, потому что он находится в (имитированном) подкаталоге «b».

Смежные вопросы