logo
01.08.2019 09:05
1
Ahoj, potřebuju poradit. Na FTP mám založenou stromovou strukturu složek a souboru v následujícím tvaru:
file-manager
- folder-1
-- subslozka-1-1
--- soubor3.jpg
--- soubor4.jpg
-- subslozka-1-2
-- soubor1.jpg
-- soubor2.jpg
- folder-2
-- soubor1.jpg
-- soubor2.jpg
- folder-3


A tyto jednotlivé soubory chci udělat klikací, tj. na stažení nebo otevření. Jednotlivé složky a soubory vypisuju následujícím skriptem:

Kód:
<?php
  $dir = "/hosting/www/adresa.cz/projekt/wp-content/uploads/file-manager";
				
    function listFolderFiles($dir){
      $ffs = scandir($dir);
				
      unset($ffs[array_search('.', $ffs, true)]);
      unset($ffs[array_search('..', $ffs, true)]);
				
      // prevent empty ordered elements
      if (count($ffs) < 1)
       return;
				
       echo '<ul>';
					
         foreach($ffs as $ff){
	   echo '<li>';
	     if(is_dir($dir.'/'.$ff)) {							
	       echo '<span>' . $dir.'/'.$ff . '</span>';
	     } else {
	       echo '<span><a href="/wp-content/uploads/file-manager/xxxxx' . $ff . '" style="color: blue;">' . $ff . '</a></span>';	
	     }
	
             if(is_dir($dir.'/'.$ff)) {
	       listFolderFiles($dir.'/'.$ff);
	     }
		
           echo '</li>';
	 }
					
       echo '</ul>'; 
     }
				
listFolderFiles($dir);
A místo xxxxx bych potreboval vlozit vzdy aktualni složku ze ktere je soubor vyčítaný. A nevím jak to udělat.

Byl by někdo tak hodný a poradil, prosim?

Díky, O.
01.08.2019 09:28
2
Tak to bys mel mit v te promenne $dir pokud se nepletu. Kdyz tam mas podminku, kdy overujes is_dir($dir), tak to je prece ten adresar o ktery ti jde, ne?

Kód:
echo '<span><a href="/wp-content/uploads/file-manager/' . $dir . '/' . $ff . '" style="color: blue;">' . $ff . '</a></span>';
01.08.2019 09:59
3
Původně odeslal musil.david
Tak to bys mel mit v te promenne $dir pokud se nepletu. Kdyz tam mas podminku, kdy overujes is_dir($dir), tak to je prece ten adresar o ktery ti jde, ne?

Kód:
echo '<span><a href="/wp-content/uploads/file-manager/' . $dir . '/' . $ff . '" style="color: blue;">' . $ff . '</a></span>';
Právě ona proměnná $dir je definovaná hned nahoře.
Kód:
$dir = "/hosting/www/adresa.cz/projekt/wp-content/uploads/file-manager";
kde musi byt jeste /hosting/www před doménou aby to správně fungovalo. Jedině toto bych musel odstranit a pak už by to měl být správný tvar.
01.08.2019 10:12
4
Původně odeslal ondra15
Právě ona proměnná $dir je definovaná hned nahoře.
Kód:
$dir = "/hosting/www/adresa.cz/projekt/wp-content/uploads/file-manager";
kde musi byt jeste /hosting/www před doménou aby to správně fungovalo. Jedině toto bych musel odstranit a pak už by to měl být správný tvar.
$dir a PHP: basename - Manual , z toho už si to poskládáš.
01.08.2019 15:05
5
cesta do pekla :), ale jinak `brooks` poradil správně.
01.08.2019 15:25
6
Podívejte se taky na RecursiveDirectoryIterator a jeho použití třeba v Nette/Finder.

Nebo na Symfony/Finder.
03.08.2019 12:05
7
PHP triky - Rekurzivní glob()