2017-07-28 3 views
3

J'utilise package compositeur Rackspace/php-OpenCloud 'installé avecComment accéder et télécharger des fichiers dans des dossiers sur rackspace open cloud container en utilisant PHP?

composer require rackspace/php-opencloud 

et en essayant de télécharger et d'obtenir la liste des fichiers contenus dans le dossier

inclus le fichier autoload et ajouter

require 'vendor/autoload.php'; 

en utilisant le processus donné sur le document http://docs.php-opencloud.com/en/latest/services/object-store/index.html mais je n'ai pas la solution pour accéder aux dossiers à l'intérieur d'un conteneur (recettes dans mon cas). Comment puis-je télécharger les fichiers dans le répertoire "images" et "uploads" présents à l'intérieur du conteneur "recettes".

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

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

$ conteneurs = $ 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()); 
} 

par le code ci-dessus, je suis en mesure d'accéder à la liste des conteneurs et je peux régler le conteneur et peut récupérer la liste des

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

Répondre

5

J'ai trouvé la réponse sur le site Web de Rackspace: https://developer.rackspace.com/docs/cloud-files/quickstart/?lang=php

Et ils expliquent clairement que nous ne pouvons pas créer un nouveau récipient à l'intérieur tout conteneur, nous pouvons passer sous-répertoire passe alors le nom de l'objet comme expliqué ci-dessous:

Bien que vous ne puissiez pas créer de conteneurs imbriqués, Cloud Files prend en charge les sous-répertoires ou les sous-dossiers. Les objets sont téléchargés dans un sous-répertoire via une convention de dénomination spéciale, en incluant le chemin de sous-répertoire dans le nom de l'objet, en séparant les segments de chemin avec le caractère de barre oblique /.

Par exemple, si vous voulez que l'URL relative de l'objet à /images/kittens/thumbnails/kitty.png, télécharger l'objet d'un conteneur en utilisant ce chemin relatif comme nom d'objet

$object = $container->uploadObject('{subdirectories}/{object_name}', $handle);