Как получить доступ к файлам и загрузить их в папки на открытом облачном контейнере, используя 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);