Как правильно распаковать архивный файл в php-opencloud


Im использует версию 1.7 php-opencloud

Вот какая-то часть моего кода.

$cloud = new Rackspace(RACKSPACE_US, $credentials);
$storage = $cloud->objectStoreService('cloudFiles', 'SYD','publicURL');
$container = $storage->getContainer('testing');

$gz_file = 'test.tar.gz';

$storage->bulkExtract('', $gz_file);

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

Смотрите скриншот: http://i.stack.imgur.com/nfXlU.png

1 2

1 ответ:

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

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

Согласно php-opencloud docs , Если вы опустите имя контейнера (как вы делаете в своем примере), то контейнеры будут созданы на основе имен файлов внутри архива.