在浏览器中浏览webdirectory

时间:2016-04-15 06:26:17

标签: php file directory-listing

我目前正在尝试以下方法:

我想浏览浏览器中的webdirectory。所以我假设我在这里有一个文件夹:/var/www我现在希望能够通过我自己创建的网站上的文件夹结构进行导航。所以有可点击的文件夹,并在该文件夹中再次使用文件夹,文件等,这些都应该是可下载的。 我已经考虑了RecursiveDirectoryIterator,但由于这个只显示所有文件名,所以它不是我需要的(因为我只想要目前我目录中的文件夹,然后,如果我点击一个目录,再次在那里等(就像我写的那样(在服务器上):cd test ls cd folder_in_test ls,依此类推,当然可以回到更高级别的文件夹。与here on dropboxGoogle Drive上的行为相同,等等,我希望你知道我的意思。

正如我所说,我尝试过这样的事情:

<?php

$path = realpath('/etc');

$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
foreach($objects as $name => $object){
    echo "$name\n";
}

?>

但它只是从完整的var/www - 文件夹中递归列出所有文件,这不是我想要的。

2 个答案:

答案 0 :(得分:1)

<?php
    $dir = '/path/to/my/directory';
    $cdir = scandir($dir);
    $output="";
    foreach ($cdir as $key => $value)
    {
       if (is_dir($dir . DIRECTORY_SEPARATOR . $value))
       {
               $output.="<div class='dir-div'  data-key='".$dir . DIRECTORY_SEPARATOR . $value."'>$value</div>";

        }
        else
        {
           $output.="<div class='file-div'>$value</div>";
        }

    }

?>
<div class="media-manager">
        <?php echo $output;?>
</div>

<script>
 $(".dir-div").on("click",function(){
     $.ajax({
         url:'somephp.php',
         method:'POST',
         data:{data:$(this).attr("data-key")}
         success:function(data){
            $(".media-manager").html(data);
         }
     }) 
 })
</script>

在somephp.php

<?php
    $dir =$_POST['data'];
    $cdir = scandir($dir);
    $output="";
    foreach ($cdir as $key => $value)
    {
       if (is_dir($dir . DIRECTORY_SEPARATOR . $value))
       {
             $output.="<div class='dir-div'  data-key='".$dir . DIRECTORY_SEPARATOR . $value."'>$value</div>";

        }
        else
        {
           $output.="<div class='file-div'>$value</div>";
        }

    }
echo  $output
?>

答案 1 :(得分:0)

在内置函数中使用scandir()php。它将返回该locatoin中的特定文件和dirname

 $dir = '/path/to/my/directory';
    $cdir = scandir($dir);
    foreach ($cdir as $key => $value)
    {
       if (is_dir($dir . DIRECTORY_SEPARATOR . $value))
       {
         //your code here 

       }
    }

//This is one more example to get files recursively.

    function dirToArray($dir) {

       $result = array();

       $cdir = scandir($dir);
       foreach ($cdir as $key => $value)
       {
          if (!in_array($value,array(".","..")))
          {
             if (is_dir($dir . DIRECTORY_SEPARATOR . $value))
             {
                $result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value);
             }
             else
             {
                $result[] = $value;
             }
          }
       }

       return $result;
    }