Rackspace Cloud Files PHP get_objects на корневом уровне

Я пытался выяснить, как получить файлы на корневом уровне, то есть получить все файлы, у которых нет пути, прикрепленного к их имени файла. У меня есть контейнер, который выглядит так

image.png            image/png
ui                   application/directory
ui/css               application/directory
ui/css/test.css      text/css
ui/image2.jpg        image/jpg

я использую вызов

Container->get_objects(0, null, null, 'ui/');

который возвращает 2 CF_Objects:

ui/css
ui/image2.jpg

Это желаемый результат

но если я запрашиваю файлы на "корневом уровне"

Container->get_objects(0, null, null, '/');

возвращает пустой массив.

Container->get_objects(0, null, null, '');

возвращает все файлы в контейнере.

В идеале он должен вернуть два объекта CF_Object image.png и ui.

Есть ли способ сделать это?

Спасибо!


person Onema    schedule 12.03.2012    source источник


Ответы (2)


В руководстве для разработчиков Cloud Files от 15 ноября 2011 г., стр. 20, говорится:

Вы также можете использовать параметр-разделитель для представления вложенной иерархии каталогов без необходимости в объектах-маркерах каталогов. Вы можете использовать любой одиночный символ в качестве разделителя. Списки могут возвращать виртуальные каталоги — они виртуальны в том смысле, что на самом деле не представляют реальных объектов. однако, как и маркеры каталогов, они будут иметь тип содержимого приложения/каталога и находиться в разделе subdir результатов json и xml.

Если у вас есть следующие объекты — фото/фото1, фото/фото2, кинообъект, видео/мувиобъект4 — в контейнере, ваш запрос параметра разделителя с использованием косой черты (/) даст вам

  • фотографии,
  • кинообъект,
  • видео.

Параметр «разделитель» не поддерживается get_objects в PHP SDK, и его использование кажется единственным способом получить файлы базового каталога.

В настоящее время запрос на слияние в github [этот запрос был одобрен]< /em> добавив этот конкретный параметр в метод get_objects.

Другие пользователи Rackspace Cloud Files API PHP SDK также добавили поддержку этого параметра. .

Посмотрите, обновляется ли исходное репозиторий php-cloudfiles, или просто создайте форк оригинала и добавьте свой собственный код. Если вам неудобно добавлять свои собственные изменения, клонируйте форк, который добавил параметр-разделитель, например

https://github.com/michealmorgan/php-cloudfiles или https://github.com/onema/php-cloudfiles

person Onema    schedule 13.03.2012

Мерж-реквест, упомянутый в ответе, был одобрен 09 мая, 2012

Необязательный параметр для get_objects был добавлен для $delimiter...

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

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

Для исправления этой ошибки был отправлен запрос .

person Justin Jenkins    schedule 12.07.2012
comment
Хорошо, не знал, что они одобрили этот запрос на слияние :) - person Onema; 12.07.2012
comment
Жаль, что была введена ошибка, если вы действительно устали ее использовать! Здесь есть исправление: github.com/rackspace/php-cloudfiles/pull/72< /а> - person Justin Jenkins; 13.07.2012
comment
Полезно знать, я не обновился до последней версии. но я буду следить за этим запросом на вытягивание и получу его, когда он будет принят. До сих пор приведенный ниже запрос работал очень хорошо для нас. - person Onema; 13.07.2012