![](/img/trans.png)
[英]How to get folder size from folder inside Rackspace Cloud Files container using PHP?
[英]Renaming Rackspace Folder/Container
我有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();
如何重命名文件夾? 或者,將文件夾中的所有對象移到新對象?
這里的問題是容器內沒有文件夾之類的東西。 容器是頂層分組,在其之下只是一組對象。
您的對象名稱中包含目錄分隔符,以便可以在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);
};
您可以通過在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/');
然后,您將遍歷並復制所有返回的對象。
-標記
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.