Как получить доступ к файлам и загрузить их в папки на открытом облачном контейнере, используя PHP?

Я использую пакет composer 'rackspace/php-opencloud', установленный с

composer require rackspace/php-opencloud

и пытается загрузить и получить список файлов внутри папки

включил файл автозагрузки и добавь

require 'vendor/autoload.php';

используя процесс, приведенный в документе http://docs.php-opencloud.com/en/latest/services/object-store/index.html но я не могу найти решение для доступа к папкам внутри контейнера (рецепты в моем случае). Как можно загрузить файлы в каталог "картинки" и "выгрузить" присутствующие внутри контейнера "рецепты".

$client = new OpenCloud\OpenStack('{keystoneUrl}', array(
  'username' => '{username}',
  'password' => '{apiKey}',
  'tenantId' => '{tenantId}',
));

$service = $client->objectStoreService('{catalogName}', '{region}', '{urlType}');

$ Containers = $service->listContainers();

foreach ($containers as $container) {
    /** @param $container OpenCloud\ObjectStore\Resource\Container */
    printf("Container name: %s\n", $container->name);
    printf("Number of objects within container: %d\n", $container->getObjectCount());
}

С помощью приведенного выше кода, я могу получить доступ к списку контейнера, и я могу установить контейнер и могу получить список

$containers = $service->listContainers();
** @param $container OpenCloud\ObjectStore\Resource\Container */
$container = $service->getContainer('{containerName}');

1 ответ

Я нашел ответ на сайте стойки: https://developer.rackspace.com/docs/cloud-files/quickstart/?lang=php

И они четко объясняют, что мы не можем создать новый контейнер внутри любого контейнера, который мы можем передать подкаталогу, а затем передать имя объекта, как описано ниже:

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

Например, если вы хотите, чтобы относительный URL-адрес объекта был /images/kittens/thumbnails/kitty.png, загрузите объект в контейнер, используя этот относительный путь в качестве имени объекта.

$object = $container->uploadObject('{subdirectories}/{object_name}', $handle);
Другие вопросы по тегам