Sven Rautenberg: PHP - MIME - *.cvs

Beitrag lesen

Moin!

wenn ich via PHP eine *.csv hochlade und mir den Type anzeigen lasse schreibt mir PHP "application/octet-stream", bin da etwas verwirrt da dies ja eigentlich ausführbare Dateien.

Nein. Ein "octet" sind schlicht 8 Bit. Es handelt sich also um einen Strom von "8-Bits". Das hat mit der Ausführbarkeit nichts zu tun. Auch das "application" hat damit nichts zu tun. Es ist der Mime-Haupttyp, welcher noch von ganz anderen Untertypen verwendet wird, die zum überwiegenden Teil keinerlei Programm darstellen. PDFs kommen beispielsweise als "application/pdf" daher, und ZIPs als "application/zip".

Erwartet habe ich "text/comma-separated-values"

Wenn der Browser das so senden würde (reine Freundlichkeit), wäre das toll. Du kannst durch manipulierte Requests aber auch problemlos ausführbare Dateien mit solch einem Mimetyp gesendet bekommen. Oder sonst irgendeinen Unsinn, der alles andere als vom Typ CSV ist.

Ich würde ganz gerne ausschliessen, dass nichts ausser *csv-Dateien hochgeladen werden aber mit dem Typen komme ich im Moment nicht weiter.

Dann lies die Datei ein und prüfe, ob sie dem von dir benötigten Format entspricht. Anders erhälst du keine Gewißheit.

Habe mir auch mal Bilder, Excel usw anzeigen lassen, und da funktioniert es. Kann mir da vielleicht jemand weiterhelfen?

Naja, was heißt schon "funktioniert". Ist alles relativ. Wenn ich eine CSV-Datei als ".xls" umbenenne und hochlade, würde vermutlich auch der Excel-Mimetyp angezeigt werden, obwohl das Format tatsächlich CSV ist. Der Browser kann das nicht echt nachprüfen, sondern muß der Dateiendung vertrauen. Nur die Mimetypen, deren Dateiendungsübersetzung er kennt, kann er ja überhaupt korrekt auszeichnen - sofern sich die Programmierer die Mühe überhaupt gemacht haben.

Aber da der Mimetyp der hochgeladenen Datei, wie erwähnt, sowieso frei manipulierbar ist, kannst du diese Information sowieso knicken.

- Sven Rautenberg

--
"Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)