Manuel: IE erkennt Datei-Typerweiterung nicht

Hi leuz',

also ich habe hier das Problem mit Internet Explorer (eigentlich alle Versionen) bei der Nutzung eines Web-Mail-Interfaces, dass die Attachments von Mails NIE korrekt gespeichert werden.

Man kennt ja beim IE, dass wenn man ein Bild oder ein anderes Link-Ziel speichern will, dass der da mal gerne eine Zahl (meist eins) in eckigen Klammern zwischen Dateiname und DatenNamensErweiterung packt. So wird aus Bild.bmp dann Bild[1].bmp. Niemand weiss warum genau.
So, bei mir habe ich nun das Problem, dass dieser Zusatz nun immer am Ende der Datei landet, was das ganze ziemlich sinnfrei macht. Jedes Attachment muss man nochmal umbenennen, weil ja nicht einfach nur der Name verändert worden ist, sondern so ja auch die damit Vernüpfte Anwendung net funzt.
Jetzt ist mir diesertage aufgefallen, dass der IE beim Klicken auf den Link mich fragte, was er denn mit der Datei Bild%2Ebmp machen sollte.
Aha denke ich, der IE kommt mit den escapten String nicht immer klar ? (Obwohl in der Statuszeile Bild.bmp stand). Also bin ich mal hin, und lasse die Links zu den Attachments mal OHNE escaption ausgeben. Jetzt kommt der IE komplett aus dem Takt, nämlich will er die Datei unter dem Namen "Bild" abspeichern, so ganz ohne Erweiterung.

Mit anderen Brausern tut's natürlich. Hat da einer eine Ahnung ?

Noch so zur Info:
Ein Link zu einem Attachment sieht z.B. folgendermassen aus:
<a href="/cgi_bin/WebClt2/UNINSTAL.EXE?show_attach=yes&usr=ADMINISTRATOR&key=001dJwrCOVIuHgyhQ46vJEA%5F&mdx=1&aid=1" title="Größe: 124 kB">

oder eben UNINSTALL%2EEXE?...

danke für jede Mühe !
Manuel

  1. Hallo, Manuel,

    Man kennt ja beim IE, dass wenn man ein Bild oder ein anderes Link-Ziel speichern will, dass der da mal gerne eine Zahl (meist eins) in eckigen Klammern zwischen Dateiname und DatenNamensErweiterung packt. So wird aus Bild.bmp dann Bild[1].bmp. Niemand weiss warum genau.

    Damit mehrere Dateien mit gleichem Namen im Cache existieren können, wird eine laufende Nummer angefügt. AFAIK.

    Jetzt ist mir diesertage aufgefallen, dass der IE beim Klicken auf den Link mich fragte, was er denn mit der Datei Bild%2Ebmp machen sollte.

    Welchen Content-Type sendest du?
    Eventuell solltest du auch http://www.ietf.org/rfc/rfc2183.txt lesen, aber bessere beispiele gibt es in den Benutzerkommentaren zu http://www.php.net/manual/en/function.header.php (siehe unten auf der Seite).

    Bspw. in PHP:
    header("Content-Type: image/bmp");
    header("Content-Disposition: filename=dateiname.bmp");
    header("Content-length: ".$dateigroesse); // Evtl. mit filesize() und fpassthru() arbeiten
    header("Cache-control: private"); // Scheinbar für den IE
    (... Dateiinhalt senden ...)

    Erklärungen finden sich auf obiger Seite, auch Beispiele speziell für den Internet Explorer. Ich kenne mich nicht wirklich damit aus.

    Aha denke ich, der IE kommt mit den escapten String nicht immer klar ? (Obwohl in der Statuszeile Bild.bmp stand). Also bin ich mal hin, und lasse die Links zu den Attachments mal OHNE escaption ausgeben. Jetzt kommt der IE komplett aus dem Takt, nämlich will er die Datei unter dem Namen "Bild" abspeichern, so ganz ohne Erweiterung.

    Dafür ist AFAIK der Content-Disposition-Header.

    Grrüße,
    Mathias

    1. Hallo, Manuel,

      Danke für die prompte Antwort!

      [...] So wird aus Bild.bmp dann Bild[1].bmp. Niemand weiss warum genau.
      Damit mehrere Dateien mit gleichem Namen im Cache existieren können, wird eine laufende Nummer angefügt. AFAIK.

      ja, das ist die logischste Erklärung.

      Jetzt ist mir diesertage aufgefallen, dass der IE beim Klicken auf den Link mich fragte, was er denn mit der Datei Bild%2Ebmp machen sollte.

      Welchen Content-Type sendest du?
      Eventuell solltest du auch http://www.ietf.org/rfc/rfc2183.txt lesen, aber bessere beispiele gibt es in den Benutzerkommentaren zu http://www.php.net/manual/en/function.header.php (siehe unten auf der Seite).

      Bspw. in PHP:
      header("Content-Type: image/bmp");
      header("Content-Disposition: filename=dateiname.bmp");
      header("Content-length: ".$dateigroesse); // Evtl. mit filesize() und fpassthru() arbeiten
      header("Cache-control: private"); // Scheinbar für den IE
      (... Dateiinhalt senden ...)

      Erklärungen finden sich auf obiger Seite, auch Beispiele speziell für den Internet Explorer. Ich kenne mich nicht wirklich damit aus.

      mhmm, also das ganze läuft ja nicht in PHP und nicht auf einem bekannten WebServer, sondern unser eigener, und die eigene Skriptsprache. Aber damit habe ich dann also die Möglichkeit, auch alles zu verschrauben, wenn es sein muss.
      Es könnte tatsächlich an der Content-Disposition liegen...

      Aha denke ich, der IE kommt mit den escapten String nicht immer klar ? (Obwohl in der Statuszeile Bild.bmp stand). Also bin ich mal hin, und lasse die Links zu den Attachments mal OHNE escaption ausgeben. Jetzt kommt der IE komplett aus dem Takt, nämlich will er die Datei unter dem Namen "Bild" abspeichern, so ganz ohne Erweiterung.

      Dafür ist AFAIK der Content-Disposition-Header.

      Grüße,
      Mathias

      nochmals vielen Dank !