PHP - 如何删除 GCP 存储桶文件夹及其中的所有 files/folders?
PHP - How can I delete a GCP bucket folder and all files/folders within it?
我正在尝试使用 gs 存储 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()
功能直接删除文件夹。您需要列出文件夹中的所有对象,使用 prefix
in bucket 来定位您的文件夹的具体位置。然后,将其一一删除,因为 API 只支持删除单个对象一次。这意味着,没有 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");
我正在尝试使用 gs 存储 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()
功能直接删除文件夹。您需要列出文件夹中的所有对象,使用 prefix
in bucket 来定位您的文件夹的具体位置。然后,将其一一删除,因为 API 只支持删除单个对象一次。这意味着,没有 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");