Unbekannte Dateieindung herausfinden

daniel_sun

Erfahrenes Mitglied
Hallo,

ich kenne von einer Datei auf dem Server nur den Dateinamen, aber nicht die Endung. Gibt es in php die Möglichkeit die Endung herauszufinden wenn man nur den Dateinamen hat (es handelt sich um Bilder die auf dem Server liegen)

Habs schon mit pathinfo() und mime_content_type() versucht. Aber beiden führte nicht um gewünschen Erfolg.

Habs mit pfad/bild versucht sowie mit Platzhaltern zu arbeitern pfad/bild.* . Beim letzteren wurde mir dan * als Dateiendung ausgegeben. Auch pathinfo(glob(pfad/bild.*)) hat mir nicht geholfen. Mir fällt nun keine weiter Funktion ein.

Gruß
Daniel_sun
 
Wie genau sieht das denn aus?
Haben die Dateien gar keine Endungen?

Ansonsten schau doch einfach in den Ordner auf deinem FTP in dem du die Bilder speicherst.
Da muss die Bilddatei doch mit endung drinn stehen.
 
@largo: Es geht nicht darum das ich die Endung nicht kenne. Es geht um eine Bildergallerie. Hier sind jpg gif und png erlaubt! Die Datein werden durchnummeriert pic_1, pic_2, pic_3 usw und in einem ordner gespeichert!
Nun kommt irgendein Besucher auf die Seite, welchem die Hochgelandenen Bilder angezeigt werden sollen. Ich weis in welchem Ordner die Datein liegen und wie sie heißen. Aber ich weis nicht ob es jpgs gifs oder pngs sind (da ja alle 3 erlaubt sind).

Das skript soll so Ablaufen:

- In der DB suchen in welchem Ordner die Bilder für das entsprechende Album liegen.
- Bilder in Album zählen
- Schleife starten
- Dateiendung prüfen (ob jpg, gif oder png)
- Bild anzeigen
- Für alle Bilder wiederholen

Würde das halt gerne lösen ohne die Bilder oder Dateiendung in der DB zu speichen.

@nepda: Ich meinte damit das pathinfo() nur funktioniert, wenn man die Datei mit endeng angibt also: pathinfo(pfad/bild.jpg, PATHINFO_EXTENSION)
 
Die Funktion glob ist hier schon richtig, nur ohne Pathinfo. glob() gibt dir ein Array zurück mit dem gesuchten Pattern.

PHP:
$images = glob($pfad.'/*');
echo "<pre>";
print_r($images);
echo "</pre>";

Dann kannst du zb mit in_array() prüfen ob es ein erlaubter dateityp ist.
 
Und was erwartest du nun?
Du hast doch bei glob alles in einem Array. Wo ist das Problem?
Alle endungen überprüfen ob die erlaubten vorhanden sind, alles andere entfernen.
Dann mit explode() den Pfad zerlegen und das Bild bleibt übrig.
PHP:
$img = explode('/', $images);
print_r($img);
 
Zurück