Rackspace php-opencloud как мне создать папку

Когда я загружаю файл, используя $container->uploadObjects($files) Я могу указать путь к каталогу в имени, чтобы создать новую папку. Если я использую Cyberduck, я вижу новую папку.

Но если я попытаюсь получить список объектов с $container->objectList($options) это не перечисляет каталог как [content_type] => application/directory, Но это происходит, когда я использую Cyberduck.

Итак, мой вопрос, как мне создать папку с помощью php-opencloud?

2 ответа

Решение

Это не относится конкретно к php-opencloud, но это ограничение CloudFiles. Подобно AWS S3 и другим хранилищам распределенных объектов, вы не можете иметь каталоги внутри сегментов. Некоторое программное обеспечение, такое как Cyberduck, знает об этом и вместо этого переименовывает файлы с иерархией, а также отображает их в виде каталогов, даже если они находятся на одном уровне контейнера. Для подробного объяснения, проверьте эту документацию.

На 6 лет позже, но мне просто пришлось сделать это самому с PHP Opencloud, и я решил, что опубликую свой подход, потому что вы действительно можете создавать папки, которые не содержат файлов. Вам просто нужно установить соответствующий тип контента при загрузке:

      $container = $objectStoreService->getContainer('container-name');
$container->uploadObject('folder-path-and-name-to-create', '', array('Content-Type' => 'application/directory'));
Другие вопросы по тегам