[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Dateinamen beim Herunterladen von Dateien
- Date: Thu, 16 Mar 2000 11:57:14 +0100 (MET)
- From: daniel _at__ roedding.de (Daniel Roedding)
- Subject: Re: Dateinamen beim Herunterladen von Dateien
Hallo Herr Allers!
Ohne nun Ihren Link konkret ausprobiert zu haben, hier ein paar
allgemeine Anmerkungen zur Thematik:
> Kann es wirklich vorkommen, da=DF beim Herunterladen von Dateien deren
> Name ge=E4ndert wird? Und wenn ja: unter welchen Bedingungen geschieht
> das? Und wo kann man drehen, um das zu verhindern?
Probleme dieser Art sind in verschiedenen Versionen des "Internet Explorer"
bekannt und lassen sich serverseitig leider nicht umgehen.
Während Netscape die vom Server verwendeten Dateinamen "blind übernimmt",
versucht IE offensichtlich, Filenamen und Extension sowie gelieferten
MIME-Type zu korrelieren. Dabei kommen lustige Sachen heraus wie beispiels-
weise:
- serverseitig als "application/octet-stream" gelieferte Dokumente, die
dummerweise auf ".doc" lauten, gehen direkt nach Word anstatt als Download
auf die Platte
- serverseitig als "application/irgendwas" gelieferte Dokumente werden
schon mal als .exe gespeichert
- dann und wann wird der Dateiname völlig ignoriert
- mit Leerzeichen in Download-Filenamen kann IE ohnehin nichts anfangen
Faustregel für die serverseitige Ausgestaltung:
- Der Download-Filename sollte als "local part" in der URL enthalten sein,
d. h. bei Lieferung aus einem CGI-Binary heraus muß ein Pfad "durch das
CGI hindurch" gelegt werden. Beispiel:
/cgi-bin/testme.cgi soll eine Datei "dokument.doc" liefern
dann muß die Download-URL als
/cgi-bin/testme.cgi/dokument.doc
geschrieben werden, damit's wenigstens halbwegs zuverlässig läuft
- Der "Content-Disposition"-Header wird von Netscape nur teilweise und vom
IE fehlerhaft ausgewertet. Man tut also gut daran, diese Headerzeile,
die ja auch die Angabe eines clientseitigen Filenamens erlaubt, einfach
wegzulassen. Durch ihre Verwendung wird der Ärger nur größer...
- Download-Dokumente, die wirklich auf die lokale Platte gehen sollen und
nicht in irgendein externes Programm, sollten möglichst mit Content-Type
"application/octet-stream" geliefert werden und idealerweise eine Exten-
sion tragen, die clientseitig garantiert nicht zu "Verwechslungen" mit
bekannten applikationsspezifischen Extensionen führen. ".doc" ist also
keine gute Idee, ".xxx" hingegen ist weniger problemträchtig.
Das größte Problem bei der ganzen Geschichte ist, daß diese Probleme nur
auf Windows-PC's auftauchen, und selbst da kann man nicht von einem
deterministischen Verhalten ausgehen, wenn IE eingesetzt wird. Da Teile der
Verarbeitungsmimik nicht im IE selbst, sondern in unterliegenden DLL's
enthalten sind, kann ein Austausch eines fast beliebigen Programmes auf
einem Windows-Rechner auch zu Verhaltensänderungen im IE führen. Dies
betrifft insbesondere Updates vom Microsoft-Produkten, aber auch Programm-
pakete von Fremdherstellern.
Für Implementatoren von CGI's gilt zusätzlich zu beachten, daß IE bei
CGI-Parametern teilweise Fehlauswertungen von Ausdrücken in URL's vornimmt.
Beispielsweise ist ein Link auf
/cgi-bin/crashme.cgi?land=Deutschlang®ion=Europa
ein völlig korrekter Ausdruck, der aber von IE in bestimmten Konstellationen
"zerfleddert" wird, weil "®" enthalten ist, was auch ohne abschließendes
Semikolon zu einem "registrated trademark"-Zeichen wird. Natürlich freut
sich der Server, der mit einer derart verunstalteten URL konfrontiert wird,
darüber nicht besonders und liefert allenfalls suboptimale Ergebnisse...
(BTW: Mit ä ohne Semikolon passiert das nicht, mit ® hingegen schon.
Man kann sich seinen Teil zur Logik des IE'schen HTML-Parsers
denken...)
Viele Grüße,
Daniel Rödding
--
Daniel Roedding phone: +49 5252 9838 0
daniel _at__ roedding.de fax: +49 5252 9838 20
Listeninformationen unter http://www.inetbib.de.