| Dateien eines Verzeichnis als Linkliste ausgeben |
Dateien eines Verzeichnis als Linkliste ausgebenLetztens erreichte mich via Wunschkasten die Frage, wie man alle Dateien eines Verzeichnisses als Linkliste ausgeben kann, wenn seitens des Provider das Directory Listing deaktiviert wurde und es sich auch per .htaccess nicht anschalten läßt. Mit PHP ist es kein Problem, alle Links in hübscher, tabellarischer Form auszugeben. Voraussetzung für die hier gezeigten Methode ist PHP 5.0.0 oder höher, sowie Zugriff auf die PHP 5 interne Klasse DirectoryIterator. (Letzteres ist normalerweise standardmäßig aktiv) Das Script zum auslesen mit DirectoryIteratorWie wir gleich sehen werden ist es mit den neuen PHP 5 Boardmitteln sehr einfach unser Vorhaben umzusetzen. Mit nur wenigen Zeilen Code lesen wir die Dateien in einem Verzeichnis aus, verlinken diese und ermitteln neben Dateigröße auch noch wann die Datei das letzte Mal aktualisiert wurde. Diese Informationen sind z.B. für Downloadbereiche interessant. Hier nun das Script: <?php // Verzeichnis mit den Dateien $verzeichnis = 'dateien/'; // Tabellenkopf echo <<<TABLEHEAD <table border="1" cellpadding="2" cellspacing="3"> <tr> <th>Dateiname</th> <th>Dateigröße</th> <th>aktualisiert</th> </tr> TABLEHEAD; // Verzeichnis auslesen und Dateien ausgeben foreach (new DirectoryIterator( $verzeichnis ) as $datei) { if (!$datei->isDir() && !$datei->isDot()) { echo '<tr>'; echo '<td><a href="' .$verzeichnis.$datei->getFilename(). '">' .$datei->getFilename(). '</a></td>'; echo '<td>' .ceil( $datei->getSize()/1024 ). ' KB</td>'; echo '<td>' .date( 'd.m.Y', $datei->getMTime() ). '</td>'; echo "</tr>\n"; } } // Tabelle schließen echo '</table>'; ?> Gehen wir ganz kurz das Script durch, dass sehr einfach zu verstehen sein sollte.
FazitWie wir gesehen haben ist es mit wenigen Zeilen Code möglich ein Mini-Downloadbereich zu realisieren. Möchte man nur bestimmte Dateien zum Download anbieten und andere Dateitypen ausfiltern, sollte man sich mit der FilterIterator Klasse beschäftigen. Wer mehr über die DirectoryIterator und FilterIterator Klassen erfahren möchte, dem sei das Tutorial Einführung in die SPL ans's Herz gelegt. Viel Spaß mit dem Script! :-) |