Gibt es in PHP einen vernünftigen Weg, den MIME-Typ zu finden?
Ich habe die letzten paar Stunden ausgiebig gesucht und es scheint, als gäbe es drei Hauptwege, bei denen jeder Weg Probleme hat:
mime_content_type () Dies ist veraltet, viele Male nicht installiert, und wenn installiert, wird manchmal die Datei mime.magic nicht gefunden.
Datei_info War nicht auf den Hosts installiert, die ich ausprobiert habe, scheint nicht sehr gute Unterstützung zu haben. Ist eine Erweiterung (PECL).
shell_exec (Datei -ib. $ Datei) Funktioniert nicht auf Windows-Servern. Ich habe es auf einem Linux-Server versucht und es gab mir "image / x-3ds2" für eine PHP-Datei. Was zum Teufel ist das !!!
Was ist ein guter, fast kugelsicherer Weg, um den MIME-Typ einer Datei zu erhalten?
Als Workaround können Sie die Erweiterung "mime.php" von Ссылка verwenden Es simuliert den mime_content_type () falls nicht verfügbar. Speziell für solche Fälle gemacht.
Sie können Ihre private mime.magic-Datei installieren und mit ini_set ("mime_magic.magicfile") erzwingen. Dies wird trotzdem empfohlen, damit Sie die gewünschten Einstellungen zur Verfügung haben.
Chris Jean hat eine Funktion namens get_file_mime_type
entwickelt. versucht zuerst, die finfo_open
-Methode zu verwenden, fällt dann zurück auf mime_content_type
und fällt dann wieder auf ein einfaches extension => mime_type
-Array zurück. Es funktioniert gut für mich, wenn die ersten beiden Optionen auf meinem Server nicht verfügbar waren. Beats muss die Funktion selbst schreiben!
Sie können die Magic Numbers verwenden, konsultieren Sie einige andere Dateisignaturlisten ( wie dieser hier ), und überprüfen Sie dann die Binärdaten für das erste Byte.
%Vor%Dies ist eigentlich eine sehr einfache Ersetzungsfunktion für file_info (), die auf die gleiche Art und Weise funktioniert, aber auf einer weit ausgedehnten (und niedrigeren) Ebene.
Alternative verwendet eine bereits erstellte externe PHP-Klasse wie diese zum Beispiel ..
Tags und Links php image get mime-types