Mark: PHP - MIME - *.cvs

Hallo Ihrs,

... gefällt mir hier gut, da frage ich auch gleich mal wieder ;)

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. Erwartet habe ich "text/comma-separated-values"

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

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

Danke und Grüsse, Mark

  1. ... Ergänzung: Opera zeigt es richtig an, IE 6 und NS 7 nicht :(

  2. Hi Mark,

    "application/octet-stream", bin da etwas verwirrt da dies ja eigentlich ausführbare Dateien. Erwartet habe ich "text/comma-separated-values"

    Zuallererst: Ich weiss nicht ob das so funktioniert und ob es am Server leigt, aber einen Versuch ist es allemal wert:
    Leg eine .htaccess im betreffenden Verzeichnis mit folgendem Inhalt an:
    AddType text/comma-separated-values csv

    Dann müsste die Datei eigentlich mit der korrekten Mimetype ausgeleifert werden.
    Sollte es nicht daran liegen, kann ich dir leider auch nicht weiterhelfen, dann musst du warten, bis sich jemand meldet, der mehr Ahnung als ich von der Materie hat.

    Gruß

    Kurt

    --
    > Nein, ich beantworte keine Anfragen per e-mail.
    "Durch die Leidenschaften lebt der Mensch, durch die Vernunft existiert er bloss."  (Nicolas Sbastien Chamfort;fr. Schriftsteller; 1741 - 1794)
    http://elektro-dunzinger.at
    http://shop.elektro-dunzinger.at
    1. Hallo Kurt,

      hat leider nicht geklappt, habe gerade gelesen, dass MIME-Typen vom Browser teilweise nicht richtig übermittelt werden :(

      Gruss

  3. Hi,

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

    m.W. kann man sich auf den MIME-Type nicht wirklich verlassen. Mir fällt auch spontan keine gute Lösung ein - das Einzige, was mir einfällt: du könntest prüfen, ob in jeder Zeile der Datei die gleiche Anzahl an Trennzeichen vorhanden ist. Damit solltest du eigentlich auf einer relativ sicheren Seite sein ;-)

    Gruß,
    Andreas.

    1. Hallo ihr drei,

      habe es auch mitlerweile festgestellt, dass darauf kein Verlass ist und vor allem dass die Browser es teilweise unterschiedlich auslegen.

      Ich prüfe jetzt beim Hochladen lediglich die Dateiendung, und zähle die Anzahl an Trennzeichen in einer Zeile. Mehr kann ich da wohl nicht machen.

      Danke für die Tips

      Gruss, Mark

  4. 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)