我目前正在尝试以下方法:
我想浏览浏览器中的webdirectory。所以我假设我在这里有一个文件夹:/var/www
我现在希望能够通过我自己创建的网站上的文件夹结构进行导航。所以有可点击的文件夹,并在该文件夹中再次使用文件夹,文件等,这些都应该是可下载的。
我已经考虑了RecursiveDirectoryIterator,但由于这个只显示所有文件名,所以它不是我需要的(因为我只想要目前我目录中的文件夹,然后,如果我点击一个目录,再次在那里等(就像我写的那样(在服务器上):cd test
ls
cd folder_in_test
ls
,依此类推,当然可以回到更高级别的文件夹。与here on dropbox或Google Drive上的行为相同,等等,我希望你知道我的意思。
正如我所说,我尝试过这样的事情:
<?php
$path = realpath('/etc');
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
foreach($objects as $name => $object){
echo "$name\n";
}
?>
但它只是从完整的var/www
- 文件夹中递归列出所有文件,这不是我想要的。
答案 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;
}