【问题标题】:PHP Browsing through files and directories [closed]PHP浏览文件和目录[关闭]
【发布时间】:2016-06-28 21:28:58
【问题描述】:

我看到了一些类似的问题,但这些并不是我想要的。我正在寻找比以下代码更好的方式来浏览文件和目录:

$currentdir = (isset($_GET['current']) && !empty($_GET['current'])) ? $_GET['current'] : '.';

if(!file_exists($currentdir)) {
  echo "There is no such directory (".$currentdir.")";
  $currentdir = '.';
}

$dirs = [];
$others = [];

foreach (new DirectoryIterator($currentdir) as $fileInfo) {
  if($fileInfo->isDot()) continue;
  if($fileInfo->isDir()) {
    array_push($dirs, $fileInfo->getFilename());
  } else {
    array_push($others, $fileInfo->getFilename());
  }
}

echo("<h3>Directories:</h3>");
foreach($dirs as $dir) {
  echo "<a href='?current=$dir'>".$dir."</a><br>";
}

echo("<h3>Files:</h3>");
foreach($others as $other) {
  $mod_date=date("d/m/Y H:i", filemtime($other));
  $size = filesize($other);

  echo "$other $mod_date $size<br>";
}

我将来想要实现的是能够在目录中移动(这意味着我需要为它们提供完整的路径)并能够对它们执行一些基本操作 - 复制、读取等。那么谁能给我一个很好的方法,也许是一个框架?

此外,在这段代码中,通过子目录移动并不顺利。我应该将父目录路径存储在某处还是以完全不同的方式重写它?

【问题讨论】:

  • 您的问题非常广泛,包含很多“假设”。我建议你尝试构建一些东西并在遇到困难时提出具体问题,或者只是谷歌搜索“PHP 文件管理器”(你的两个标签),然后从 Source Forge 下载完整的 PHP 文件管理器,你会得到第一个结果。跨度>

标签: php file-manager


【解决方案1】:

这里有一个线索:当您遍历一个层次结构(如文件系统)并且事先不知道可能有多少级子目录时,您需要所谓的递归算法。也就是调用自身的函数。像这样(伪代码):

function listAllFilesInTree($dirname) {
    moveToDirectory($dirname) ;
    $listing = getDirectoryListingAsArray(".") ;
    foreach ($listing as $item){
        if ($item.type = "dir")
            listAllFilesInTree ($item.name) ;
        else
            $filelist[] = $item.fullyQualifiedName ;
    }
    moveToPreviousDirectory();
}

请注意,如果它找到一个子目录,它只是调用自己来处理该子目录。当它停止查找子目录时,递归崩溃,留下 $filelist 与树中所有文件的列表,无论树有多深。如果您在 SO 上搜索“recursion”或“recursive”,您会发现关于该主题的其他大约一百万个帖子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2013-05-11
    • 2012-08-10
    • 1970-01-01
    • 2011-09-28
    • 2010-11-24
    相关资源
    最近更新 更多