Quero implementar no meu sistema web, uma função de anexos. Preciso listar os arquivos em árvore de um diretório, com PHP.
Estou tentando implementar um exemplo que encontrei na net mas da forma em que eu estou fazendo, pois terei que fazer um foreach para cada subnível do diretório... Estou usando o plugin JS-Tree para deixar estilizado. Sou bem iniciante em PHP, se alguem puder dar uma ajuda, agradeço muito! Esse é o código de teste que eu tenho atualmente:
<?php
define('DS', DIRECTORY_SEPARATOR);
define('RAIZ', '/var/www');
define('GERAIS', RAIZ.'/');
define('FUNCIONARIOS', GERAIS.'/');
function escaneiaDiretorio($root){
$ponteiro = scandir($root);
$count = count($ponteiro);
echo $count;
foreach($ponteiro as $lista){
if($lista !="." && $lista!=".."){
if (is_dir($root.DS.$lista))
$pastas[]=$lista;
else
$arquivos[]=$lista;
}
}
$geral[0] = $pastas;
$geral[1] = $arquivos;
return $geral;
}
$nivel_0 = escaneiaDiretorio(RAIZ);
$pastas = $nivel_0[0];
$arquivos = $nivel_0[1];
echo 'Navegue na árvore abaixo para vizualizar seus arquivos de log (registro de atividades dos funcionários), separados por data. <br /><br />';
?>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jstree basic demos</title>
<style>
html { margin:0; padding:0; font-size:62.5%; }
body { max-width:800px; min-width:300px; margin:0 auto; padding:20px 10px; font-size:14px; font-size:1.4em; }
h1 { font-size:1.8em; }
.demo { overflow:auto; border:1px solid silver; min-height:100px; }
</style>
<link rel="stylesheet" href="./../../dist/themes/default/style.min.css" />
</head>
<body>
<h1>HTML demo</h1>
<div id="html" class="demo">
<ul id="browser" class="filetree">
<li class="closed">
<span class="file">Lista de Arquivos</span>
<ul>
<?php
foreach($arquivos as $arquivo){
?>
<li data-jstree='{ "icon" : "jstree-file" }'>
<span>
<?php echo $arquivo; ?>
</span>
</li>
<?php
}
?>
<?php
foreach($pastas as $pasta){
?>
<li class="closed">
<span class="folder"><?php echo $pasta; ?></span>
<ul>
<?php
$nivel_1 = escaneiaDiretorio(GERAIS.$pasta.DS);
$sub_arquivos = $nivel_1[1];
foreach($sub_arquivos as $arq){
?>
<li data-jstree='{ "icon" : "jstree-file" }'>
<span>
<?php echo $arq; ?>
</span>
</li>
<?php
}
?>
<?php
$nivel_1 = escaneiaDiretorio(GERAIS.$pasta.DS);
$sub_arquivos = $nivel_1[0];
foreach($sub_arquivos as $arq){
?>
<li>
<span>
<?php echo $arq; ?>
</span>
<ul>
<?php
$nivel_2 = escaneiaDiretorio(GERAIS.$pasta.DS.$arq);
$teste = $nivel_2[0];
foreach($teste as $niv_2){
?>
<li>
<span><?php echo $niv_2; ?></span>
<ul>
<?php
$nivel_3 = escaneiaDiretorio(GERAIS.$pasta.DS.$arq.DS.$niv_2);
$n3 = $nivel_3[0];
foreach($n3 as $niv_3){
?>
<li>
<span><?php echo $niv_3; ?></span>
<ul>
<?php
$nivel_4 = escaneiaDiretorio(GERAIS.$pasta.DS.$arq.DS.$niv_2.DS.$niv_3);
$n4 = $nivel_4[0];
foreach($n4 as $niv_4){
?>
<li>
<span><?php echo $niv_4; ?></span>
<ul>
<?php
$nivel_5 = escaneiaDiretorio(GERAIS.$pasta.DS.$arq.DS.$niv_2.DS.$niv_3.DS.$niv_4);
$n5 = $nivel_5[0];
foreach($n5 as $niv_5){
?>
<li>
<span><?php echo $niv_5; ?></span>
</li>
<?php }?>
</ul>
</li>
<?php }?>
</ul>
</li>
<?php }?>
</ul>
</li>
<?php }?>
</ul>
</li>
<?php
}
?>
</ul>
</li>
<?php
}
?>
</ul>
</li>
</ul>
</div>
<script src="./../../dist/jstree.min.js"></script>
<script>
// html demo
$('#html').jstree();
</script>
</body>
</html>