MIME-Type wird falsch erkannt

TTlong

Angesehenes Mitglied
Hallo,

ich habe das Problem, dass auf meinem Serve die MIME-Types, besser gesagt nur einer nicht richtig erkannt wird.

Ich muss ein Upload-Tool erstellen (ähnlich der One-Click-Hoster) und muss die Dateien natürlich prüfen. Die Prüfung soll anhand des MIME-Types geschehen und genau da liegt mein Problem.

Der Typ für RAR-Archive wird als application/octet-stream erkannt. Korrekt wäre aber application/x-rar-compressed

Ich habe nun versucht, den MIME-Type in der mime.type hinzuzufügen und es per .htaccess mit AddType application/x-rar-compressed rar probiert, aber beides ohne Erfolg.

ZIP-Dateien dagegen werden korrekt als x-zip-compressed erkannt, nur eben bei den RAR-Dateien klappt es nicht.


Erst dachte ich, mein Code wäre irgendwo fehlerhaft, aber selbst ein CODE $file = $_FILES['file']['type'];

echo $file;


liefert den falschen MIME-Type.


Kann mir einer sagen warum das so ist wie es ist?


Gruß TTlong
 
Das hat was mit dem Header zu tun, die MIME-Type kann immer nur durch den Header zu den entsprechenden Type zugeordnet werden, wenn dort nicht hinterlegt, kommt halt application/octet-stream als Fallback raus.

http://www.tutorials.de/forum/php/211650-m...tml#post1098474 -->
http://www.freesoft.org/CIE/RFC/1521/32.htm

http://de.wikipedia.org/wiki/RAR_(Dateiformat)


Leider habe ich selber noch nie ein MIME-Type hinzufügen müssen, kann Dir da also leider außer diese Auskunft nicht weiterhelfen.


MfG,
Sascha
 
Auf

$_FILES['file']['type'];

sollte man sich nicht verlassen. Das wird vom Browser mitgesendet und kann auf dem selben System mit unterschiedlichen Browsern bei der selben Datei unterschiedliche Inhalte haben. Ne richtig schöne Möglichkeit gibts derzeit meines Wissens noch nicht. Aber vielleicht hast Du Zugriff auf die fileinfo-Funktionen. Die sind schon ganz gut.
 
Auf $_FILES['file']['type']; sollte man sich _niemals_ verlassen. Gerade weil ich dir jeden Schrott mitsenden kann.
 
Vielen Dank erstmal für eure Antworten.

Es ist nur eine Probeaufgabe die ich hier bewältigen muss, dennoch möchte ich es so gewissenhaft wie möglich machen.


Ich hatte im ersten Versuch nicht anhand des MIME-Types sondern der Dateiendung entschieden, ob Upload ja oder nein.


Wie würdet ihr es lösen? Einfach application/octet-stream (allgemein) als Upload zulassen oder doch eher die Dateiendung extrahieren und danach entscheiden. Wirklich toll finde ich beides ja nicht.



MfG TTlong
 
MagicMime nutz ich auch, aber dazu braucht man auch erstmal MagicMime... Das ist ja keine Standard-Implementierung.

Wenn man die Möglichkeit hat, dann gleich FINFO
smile.gif
(Fileinfo)
 
OK, mime-magic war bei meiner Standard-Installation von PHP bereits integriert (ohne es selbst kompiliert zu haben) und scheint soweit auch zu funktionieren.

FINFO wird extra installiert werden müssen.

 
Zurück
Oben