我正在尝试递归列出我的存储桶中的每个文件。这不是太多的文件,但我想列出它们来测试一些东西。此代码适用于普通文件系统,但不适用于Google云端存储。
有人有任何建议吗?
function recurse_look($src) {
$dir = opendir($src);
while(false !== ( $file = readdir($dir)) ) {
if (( $file != '.' ) && ( $file != '..' )) {
if ( is_dir($src . '/' . $file) ) {
recurse_look($src . '/' . $file);
}
else {
echo $src . '/' . $file;
echo "<br />";
}
}
}
closedir($dir);
}
recurse_look("gs://<BUCKET>");
答案 0 :(得分:1)
就个人而言,我建议不要在Google云端存储上使用文件系统模拟抽象层,以便列出存储桶中的所有内容等任务,而只需触及底层功能。
特别是,请参阅https://cloud.google.com/storage/docs/json_api/v1/json-api-php-samples了解有关身份验证等的所有信息,并且,有一次,我们会关注这一点,只关注示例中的一行:
$objects = $storageService->objects->listObjects(DEFAULT_BUCKET);
这就是列出存储桶中所有对象所需要的全部内容( 与“目录中的文件”相同)和“文件系统模拟”在桶和物体之上,我提供的只是我个人的意见,最终伤害而不是帮助尽管他们出色的意图: - )。
现在,如果对象的名称包含例如斜杠,并且您想将其视为象征性地表示某事或其他内容,那么请继续前进,但至少这样你肯定你是获得所有实际存在于桶中的对象,除了那些! - )
答案 1 :(得分:0)
现在glob正在运行,你可以试试这样的东西
function lstree($dir) {
foreach (glob($dir . '/*') as $path) {
if (is_dir($path)) {
echo $path;
lstree($path);
} else {
echo $path;
}
}
lstree('gs://{bucket}/');