
Mit dem folgenden PHP Script lassen sich alle Dateien in einem Verzeichnis anzeigen bzw. auflisten, wobei hier die Möglichkeit besteht, nur bestimmte Dateitypen auflisten zu lassen.
Die Dateitypen lassen sich dabei frei definieren, etwa Bilddateien wie jpg, bmp, gif etc., Log- oder Textdateien, PHP- oder HTML-Dateien, u.s.w. Das Script funktioniert ab PHP5.
Die Dateien werden dabei rekursiv sortiert (Z-A), was vor allem bei Logdateien sinnvoll ist. Die Sortierreihenfolge kann jedoch im Script auf Standard (A-Z) geändert werden.
<ul>
<?phperror_reporting(0);$verzeichnis = "./"; // Auszulesendes Verzeichnis$sortierung = "1"; // Sortierung ("0"=A-Z, "1"=Z-A)$extension = "log"; // Gewünschte Dateiendung$dateien = scandir
($verzeichnis, $sortierung); foreach ($dateien as $datei) { $fileinfos = pathinfo($verzeichnis."/".$datei); $filesize = ceil(filesize($verzeichnis."/".$datei)/1024); if ($datei != "." && $datei != ".." && $fileinfos['basename']) { $dateitypen= array("$extension"); if(in_array($fileinfos['extension'],$dateitypen)) { unset($datei);?><li><div><a href="
<?php echo $fileinfos['dirname']."/".$fileinfos['basename'];?
>" target="_blank">
<?php echo $fileinfos['filename']; ?></a> (
<?php echo $fileinfos['extension']; ?> |
<?php echo $filesize ; ?>kb)</div></li>
<?php }; };};?></ul>
Quelle Original Scriptcode: Internet, angepasst und erweitert
Und hier das Script als komplette Seite, inklusive HTML und CSS-Formatierung:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>Verzeichnis auslesen</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<style type="text/css">
body {
margin:0px;
background-color:#ffffff;
}
</style>
</head>
<body>
<ul>
<?phperror_reporting(0);$verzeichnis = "./"; // Auszulesendes Verzeichnis$sortierung = "1"; // Sortierung ("0"=A-Z, "1"=Z-A)$extension = "log"; // Gewünschte Dateiendung$dateien = scandir
($verzeichnis, $sortierung); foreach ($dateien as $datei) { $fileinfos = pathinfo($verzeichnis."/".$datei); $filesize = ceil(filesize($verzeichnis."/".$datei)/1024); if ($datei != "." && $datei != ".." && $fileinfos['basename']) { $dateitypen= array("$extension"); if(in_array($fileinfos['extension'],$dateitypen)) { unset($datei);?><li><div><a href="
<?php echo $fileinfos['dirname']."/".$fileinfos['basename'];?
>" target="_blank">
<?php echo $fileinfos['filename']; ?></a> (
<?php echo $fileinfos['extension']; ?> |
<?php echo $filesize ; ?>kb)</div></li>
<?php }; };};?></ul>
</body>
</html>
Quelle Original Scriptcode: Internet, angepasst und um HTML und CSS erweitert
Den Scriptcode bzw. HTML-Code einfach in eine PHP-Datei packen, in das gewünschte Verzeichnis legen und die PHP-Datei im Browser aufrufen. Schriftart und -größe können durch zusätzliche CSS-Einträge einfach angepasst werden.
Mehrere Dateitypen auflisten
Es ist auch möglich, mehrere Dateitypen auflisten zu lassen. Dazu ist folgende kleine Änderung im Scriptcode nötig:
// Mehrere Dateitypen auflisten //
Die Konfigurationszeile $extension = "log"; // Gewünschte Dateiendung löschen.
In der Zeile $dateitypen= array("$extension"); die gewünschten Dateiendungen anstelle der Variable $extension direkt eintragen.
So muss die Zeile nun aussehen: $dateitypen= array("jpg", "gif", "png");
Die einzelnen Dateiendungen müssen dabei, wie im Beispiel oben gezeigt, durch Kommata getrennt werden.
Mögliche Anpassungen für die Ausgabe
Der HTML-Bereich im Script lässt sich natürlich anpassen und damit die Ausgabe ganz nach Wunsch verändern. Sollen etwa die Dateinamen nicht anklickbar sein, sieht der HTML-Code so aus:
<li><div>
<?php echo $fileinfos['filename']; ?> (
<?php echo $fileinfos['extension']; ?> |
<?php echo $filesize ; ?>kb)</div></li>
Um nur die Dateinamen ohne Zusatzinfos anzuzeigen, wird dieser HTML-Code verwendet:
<li><div>
<?php echo $fileinfos['filename']; ?></div></li>
Update: Eine
alternative Variante zum rekursiven Auslesen von Dateien gibt's im neueren Artikel
PHP: Dateien in Verzeichnis rekursiv auflisten, mit und ohne Filter. Hier werden auch Unterverzeichnisse mit berücksichtigt.
Artikel zuletzt geändert am 2.9.2019
Ich denke mir mal, dass es nicht wenige gibt, die dann eher die Nutzungseigenschaft der Dateien /also "Image" oder "reine Textdatei") aussortieren und auflisten, bzw. verarbeiten möchten? Das wäre dann auch gleichzeitig ein Ansatz wie man sich alle Images für eine Galerie aus dem Ordner holen kann.
Zudem ich mir, dass es nicht für ganz ungefährlich ist, wenn man sich hierbei nur auf die Dateierweiterungen verlässt. Je nach Einsatz könnte ja sonst böswilliger Code eingespeist werden, oder?!
Eine Lösung über
Freut mich, dass das Script gefällt.
Ursprünglich ist das Script nur zur Anzeige von einer Dateiendung konzipiert.
Mit einer kleinen Änderung im Code ist es aber ganz leicht möglich, auch mehrere Dateiendungen anzeigen zu lassen:
Die Konfigurationszeile $extension = "log"; // Gewünschte Dateiendung löschen,
und
in der Zeile $dateitypen= array("$extension"); die gewünschten Dateiendungen anstelle der Variable $extension direkt eintragen.
So muss die Zeile dann aussehen: $dateitypen= array("jpg", "gif", "png");
Ich werde diese Variante gerne im Artikel mit aufnehmen.
Da der Scriptcode eigentlich für die interne Anwendung gedacht ist, etwa um sich Log- oder Bilddateien in einem Ordner auflisten zu lassen, denke ich nicht, dass es hier zu Sicherheitsproblemen kommen kann
Schöne Grüße!
vielen Dank für dein Script. Es funktioniert allerbest.
Viele Grüße aus der Heide,
Stefan
danke für's Feedback!
Ebenfalls beste Grüße!
FG
gerne versuche ich hier weiterzuhelfen. Mail an dich ist unterwegs.
LG