我正在使用安装了作曲家包'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 OpenCloudOpenStack('{keystoneUrl}', array(
'username' => '{username}',
'password' => '{apiKey}',
'tenantId' => '{tenantId}',
));
$service = $client->objectStoreService('{catalogName}', '{region}', '{urlType}');
$containers = $service->listContainers((;
foreach ($containers as $container) {
/** @param $container OpenCloudObjectStoreResourceContainer */
printf("Container name: %sn", $container->name);
printf("Number of objects within container: %dn", $container->getObjectCount());
}
通过上面的代码,我能够访问容器列表,我可以设置容器并可以获取列表
$containers = $service->listContainers();
** @param $container OpenCloudObjectStoreResourceContainer */
$container = $service->getContainer('{containerName}');
我在rackspace网站上找到了答案: https://developer.rackspace.com/docs/cloud-files/quickstart/?lang=php
他们清楚地解释说,我们不能在任何容器内创建新容器,我们可以传递子目录然后传递对象的名称,如下所述:
虽然您无法创建嵌套容器,但云文件支持子目录或子文件夹。对象通过特殊的命名约定上传到子目录,方法是在对象名称中包含子目录路径,用正斜杠字符/分隔路径段。
例如,如果您希望对象的相对 URL 为/images/kittens/thumbnails/kitty.png,请使用该相对路径作为对象名称将对象上传到容器
$object = $container->uploadObject('{subdirectories}/{object_name}', $handle);