繁体   English   中英

PHP - 如何删除 GCP 存储桶文件夹及其中的所有文件/文件夹?

[英]PHP - How can I delete a GCP bucket folder and all files/folders within it?

我正在尝试使用 gs storage PHP 库删除 GCP 存储桶中的文件夹。

文件夹结构是这样的

-Folder1
--Folder1.1
---File
---File
--Folder1.2
---File

-Folder2
--Folder2.1
---File
---File
--Folder2.3
---File

希望这是有道理的。 如果没有,我基本上只需要删除一个文件夹以及其中的所有文件和文件夹。

当我做

$storage->bucket($_ENV['bucket_name'])->object('folder1')->delete();

我刚收到 404“没有这样的对象”错误。 我看不到库中用于删除文件夹及其内容的任何其他选项。

您不能仅使用$object->delete() function 直接删除文件夹。您需要使用 bucket 中的prefix列出文件夹内的所有 object 以定位文件夹的特定位置。然后,删除因为API只支持一次删除一个object。 这意味着,没有使用通配符或类似子句删除多个对象的 API 调用。

要删除包括文件夹在内的所有文件,请使用下面的示例代码,灵感来自这个答案

require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Storage\StorageClient;

function delete_Folder($bucketName)
{

    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $objects = $bucket->objects([
        'prefix' => 'foldername/'
    ]);
    foreach ($objects as $object) {
        $object->delete();
        printf('Deleted object: %s' . PHP_EOL, $object->name());
    }
}

delete_Folder("mybucket");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM