2013-04-17 4 views
2

나는 Rackspace에서 PHP 라이브러리를 가지고 있습니다. 우리는 모든 파일을 '데이터'라는 컨테이너에 보관합니다. 이 컨테이너 내에는 파일의 계층 적 디렉토리가 있습니다. 내가 객체, 아무 문제의 이름을 바꾸거나 이동할 수 있어요Rackspace 폴더/컨테이너의 이름 바꾸기

는 (내 자신의 클래스에 싸여) :

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

가 어떻게 폴더 이름을 바꿀 수 있습니다? 또는 폴더의 모든 개체를 새 폴더로 이동 하시겠습니까?

답변

1

에 의해 당신은 의사에 의해 개체를 나열 할 수는 list_objects() 호출에서 접두사를 지정하여

list_objects($limit=0, $marker=NULL, $prefix=NULL, $path=NULL) 

그래서이의 라인을 따라 뭔가 일을해야 : 다음은 함수의 사용입니다

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

당신 좋겠 다음 루프를 통해 모든 반환 된 개체를 복사합니다.

+0

이 답변을 받아 보겠습니다. 정확하게 알아야 할 내용입니다. 그리고 당신은 포인트가 필요합니다! –

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); 
}; 
+0

필자가 받아 들인 대답보다 더 철저하므로이 대답에 대한 요지를 제공 할 것입니다. –