2

Rackspace の PHP ライブラリがあります。すべてのファイルは「データ」と呼ばれるコンテナに保管されます。そのコンテナ内には、ファイルの階層ディレクトリがあります。

オブジェクトの名前を変更したり移動したりできますが、問題ありません (自分のクラスにラップされています):

    $this->container->move_object_to('uploads/files/file.txt', 'data', 'uploads/files2/filecopy.txt');

しかし、フォルダーで同じことを行うことはできません:

    $this->container->move_object_to('uploads/files', 'data', 'uploads/files2');

そこで、代わりに、フォルダー内のすべてのオブジェクトを取得し、それぞれを個別にコピーすると考えました。しかし、コンテナ内のオブジェクトしか取得できません:

    $container = $this->connection->get_container('data');
    $files = $container->list_objects();

これは機能しません:

    $container = $this->connection->get_container('data/uploads');
    $files = $container->list_objects();

フォルダの名前を変更するにはどうすればよいですか? または、フォルダ内のすべてのオブジェクトを新しいフォルダに移動しますか?

4

2 に答える 2

3

ここでの問題は、コンテナー内にフォルダーのようなものが存在しないことです。コンテナーは最上位のグループであり、その下には一連のオブジェクトがあります。

オブジェクトの名前にはディレクトリ区切り文字が含まれているため、URL でそのように参照できます。実際には、それらは名前に似た接頭辞が付いた個々のオブジェクトにすぎません。それらは実際には「フォルダーごと」にグループ化されていません。

私は PHP プログラマーではありませんが、ここにいくつかの疑似コードを示します (正確ではない可能性があります)。

@magglass1 が提供する機能を使用するように編集

$old_dir = "oldir/";
$new_dir = "newdir/";
$container = $this->connection->get_container('data');
$files = $container->list_objects(0, NULL, $old_dir);
foreach ($files as $file) {
    $new_filename = substr_replace($file, $new_dir, strpos($file, $old_dir), strlen($old_dir));
    $this->container->move_object_to($file, 'data', $new_filename);
};
于 2013-04-24T15:30:07.913 に答える