В настоящее время я пробую следующее:
Я хочу перемещаться по моему веб-каталогу в браузере. Допустим, у меня есть папка здесь: /var/www
и теперь я хочу иметь возможность перемещаться по структуре папок на сайте, который я создаю сам. Таким образом, есть интерактивные папки, и в этих папках снова папки, файлы и т. Д., Которые должны быть загружаемыми.
Я уже думал о RecursiveDirectoryIterator, но так как этот показывает только все имена файлов одновременно, это не то, что мне нужно (так как я хочу только папки в каталоге, в котором я сейчас нахожусь, а затем, если я нажму на каталог, снова буду там и т. д. (как Я бы написал (на сервере): cd test
ls
cd folder_in_test
ls
и так далее, с возможностью вернуться к папке более высокого уровня, конечно. Такое же поведение, как, например, здесь на Dropbox или на Гугл Диск и так далее, надеюсь, вы понимаете, о чем я.
Как я уже сказал, я попробовал что-то подобное:
<?php
$path = realpath('/etc');
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
foreach($objects as $name => $object){
echo "$name\n";
}
?>
Но это просто список всех файлов рекурсивно из полного var/www
Папка, а это не то, что я хочу.
<?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
?>
используйте scandir () php во встроенной функции. он будет возвращать определенные файлы и 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;
}