Rackspace Cloud Files PHP get_objects на уровне "root"

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

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_Objects image.png и пользовательский интерфейс.

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

Спасибо!

2 ответа

Решение

Руководство разработчика облачных файлов от 15 ноября 2011 г., стр. 20 гласит:

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

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

  • фото,
  • MovieObject,
  • видео.

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

В настоящее время в github есть запрос на слияние [ этот запрос был с тех пор утвержден ], добавляющий этот конкретный параметр в метод get_objects.

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

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

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

Запрос на слияние, указанный в ответе, был утвержден 09 мая 2012 г.

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

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

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

Другие вопросы по тегам