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'));