Seite 1 von 1

Dateityp erkennen

Verfasst: So Sep 04, 2011 3:15 pm
von naums
Hallihallöchen,

Ich habe auf der Festplatte meines Servers Dateien gespeichert. Ich will herausfinden, welchen Typ diese Dateien haben (zb. image/jpeg), sodass ich zb. alle images anzeigen lassen kann, alle textdateien (darunter auch html, css, js) in eine textarea laden kann, und noch ein bisschen spaß damit machen kann. Kann mir jmd. sagen welche Fkt. ich benutzen muss um den Dateitypen einer auf meiner HDD gespeicherten (also der des Servers) zur Laufzeit zu erfragen? (Ich hab da nix brauchbares gefunden)

MfG Naums

Re: Dateityp erkennen

Verfasst: So Sep 04, 2011 3:42 pm
von Dirty Oerti
Den Dateityp erfragen?
Entweder du schaust dir die Dateiendung an (dazu müssen die natürlich richtig gesetzt sein) oder du musst sozusagen raten und nach den jeweiligen Headern suchen. JPEG, GIF, PNG haben z.B. unterschiedliche, die musst du halt auslesen und je nach dem dann entscheiden.
Bei html, css bzw allgemein "Textdateien" ist das gar nicht so leicht. Dazu musst du die Datei im Prinzip schon fast parsen, um sicherstellen zu können, um welche Art von Datei es sich handelt.

So trivial ist das ganze also auf keinen Fall.

Außer, man beschränkt das auf die Dateiendung. ;)

Re: Dateityp erkennen

Verfasst: So Sep 04, 2011 4:20 pm
von cloidnerux
Viele Dateien haben auch am Anfang eine bestimmte zeichenfolge, zip-Archive zB "PK"(siehe Reverse Engineering Artikel). Vlt kommst du damit weiter.

Re: Dateityp erkennen

Verfasst: So Sep 04, 2011 5:04 pm
von naums
Beim Upload der Datei wird die doch vom Server direkt eingestuft als "image/jpeg" zb. Und das geht also nicht für Dateien auf der Festplatte? Ansonsten werde ich wohl die Dateiendung unter die Lupe nehmen müssen. Zumal, naja, viele versch. Dateien will ich ja garnicht benutzen... ^^ ein paar Textdateien (.htm, .js, .css, .ini) und ein paar Bilder. Mehr is da eigentlich auf dem Server nicht anzutreffen ^^

Okay, danke euch. Ich explodier die Dateinamen einfach :)

Re: Dateityp erkennen

Verfasst: So Sep 04, 2011 5:12 pm
von nufan
Das könntest du über Mimetypes lösen und PHP hat anscheinend auch die nötige Funktion:
http://www.php.net/manual/en/function.finfo-file.php

Re: Dateityp erkennen

Verfasst: Mo Sep 05, 2011 4:32 pm
von naums
nun ists zu spät... ich machs schon mit Dateiendungen. Danke trotzdem ;)

Re: Dateityp erkennen

Verfasst: Di Sep 06, 2011 1:09 pm
von fat-lobyte
Es gibt übrigens auch ein Nettes kleines Programm, das anhand der ersten Bytes erkennt um welche Datei es sich handelt, es heisst "file":

Code: Alles auswählen

$ file /usr/bin/file
/usr/bin/file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
$ file html/index.php
html/index.php: HTML document text
$ file xstream.jar
xstream.jar: Zip archive data, at least v2.0 to extract
Das könntest du aufrufen und dessen Ausgabe parsen.

Edit:
Oh, hab gerade gesehen, das kann auch Mime-Types:

Code: Alles auswählen

$ file -i /usr/bin/file
/usr/bin/file: application/x-executable; charset=binary

Re: Dateityp erkennen

Verfasst: Di Sep 06, 2011 2:05 pm
von Xin
@fat-lobyte: file ist ein schönes Tool, hatte ich schon wieder ganz vergessen. Ich habe es zumindest mal als Link ins Wiki gesetzt.

http://www.proggen.org/doku.php?id=bash ... #programme

Re: Dateityp erkennen

Verfasst: Di Sep 06, 2011 2:53 pm
von fat-lobyte
Xin hat geschrieben:@fat-lobyte: file ist ein schönes Tool, hatte ich schon wieder ganz vergessen.
Ja, ich erfeue mich immer wieder daran. Wirklich verdammt nützlich und auf Windows meistens der ausschlaggebende Grund Cygwin zu installieren.