Jens: Dateidownload - verfälschter Dateiname

Hallo,

ich habe ein einfaches Script für den Dateidownload auf 'nem Server liegen, das auch ganz ordentlich arbeitet:

if (file_exists($file) && strpos(realpath($file),getcwd()) === 0)
{
 header("Content-type: application/octet-stream");
 header("Content-Disposition: attachment; filename=".basename($file));
 readfile($file);
}

Nun ist ein Problem mit bestimmten Dateinamen aufgetaucht. Versuche ich Dateien mit Namen wie 5.7-irgendeintext.doc zu downloaden, bekomme ich angeboten, sie als 5(1).7-irgendeintext.doc lokal zu speichern. Bisher ist mir das (oder ähnliches) mit anderen Dateinamen noch nicht passiert. basename($file) liefert noch den richtigen Dateinamen, der Fehler muss also später liegen.

Hat jemand 'ne Idee?

Danke. Gruss, Jens

  1. Hi!

    Was für einen Browser verwendest du denn?
    Etwa den Internet Explorer?
    Dann würde ich vorschlagen du versuchst mal mit einem anderen Browser (wie Mozilla Firefox) die Datei herunterzuladen.
    Ich bin mir sicher dass der Fehler dort nicht kommt...
    (die (1) macht der IE nämlich immer mit dran)

    cu

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    SELFCode: ss:| zu:) ls:< fo:# de:> va:} ch:? sh:) n4:( rl:? br:^ js:( ie:% fl:( mo:)
    http://emmanuel.dammerer.at/selfcode.html
    1. Hallo,

      Was für einen Browser verwendest du denn?
      Etwa den Internet Explorer?
      Dann würde ich vorschlagen du versuchst mal mit einem anderen Browser (wie Mozilla Firefox) die Datei herunterzuladen.
      Ich bin mir sicher dass der Fehler dort nicht kommt...
      (die (1) macht der IE nämlich immer mit dran)

      Ja, ich benutze den IE, kann daran aber nichts ändern (bei mir schon, aber nicht bei denen, die das Script benutzen sollen). Aber nein, der IE macht die (1) nicht immer ran. Wie ich schon geschrieben habe, funktioniert das Skript bei den meisten Dateien tadellos (in der selben Konstellation (Webserver, Browser, alles ist gleich)). Nur bei diesen merkwürdigen Dateinamen (mit denen ich es leider zu tun habe), taucht das Problem auf.

      Gruss, Jens

      1. Hi!

        Aber daran kannst du leider nichts ändern, es sei denn du bekommst irgendwo den Quellcode vom IE - was ich bezweifle.

        Schon mal aufgefallen? Die (1) kommt immer vor dem Punkt, also kannst du vielleicht verhindern Dateien mit mehr als einem Punkt zum Download anzubieten... ;-)

        cu

        Marc Reichelt || http://www.marcreichelt.de/

        --
        Linux is like a wigwam - no windows, no gates and an Apache inside!
        SELFCode: ss:| zu:) ls:< fo:# de:> va:} ch:? sh:) n4:( rl:? br:^ js:( ie:% fl:( mo:)
        http://emmanuel.dammerer.at/selfcode.html
        1. Hi,

          Aber daran kannst du leider nichts ändern, es sei denn du bekommst irgendwo den Quellcode vom IE - was ich bezweifle.

          Allerdings bestünde die Möglichkeit, Assembler zu lernen und das ganze durch einen Disassembler zu jagen ;)

          E7

          1. Hi!

            Hi,

            Aber daran kannst du leider nichts ändern, es sei denn du bekommst irgendwo den Quellcode vom IE - was ich bezweifle.

            Allerdings bestünde die Möglichkeit, Assembler zu lernen und das ganze durch einen Disassembler zu jagen ;)

            Wenn du dir die Mühe machen willst.
            Wenn ich legal die Quelle des Internet Explorers verändern könnte würde ich die Quellen löschen und firefox.exe als Standardbrowser registrieren - nur bekommt dann Windowsupdate erhebliche Probleme! ;-)

            cu

            Marc Reichelt || http://www.marcreichelt.de/

            --
            Linux is like a wigwam - no windows, no gates and an Apache inside!
            SELFCode: ss:| zu:) ls:< fo:# de:> va:} ch:? sh:) n4:( rl:? br:^ js:( ie:% fl:( mo:)
            http://emmanuel.dammerer.at/selfcode.html
            1. Hi,

              Allerdings bestünde die Möglichkeit, Assembler zu lernen und das ganze durch einen Disassembler zu jagen ;)
              Wenn du dir die Mühe machen willst.

              Mach ich, sobald ich Assembler kann... ;)

              Wenn ich legal die Quelle des Internet Explorers verändern könnte würde ich die Quellen löschen und firefox.exe als Standardbrowser registrieren

              Man könnte rein theoretisch auch iexplore.exe löschen und die firefox.exe dahin kopieren ;)

              nur bekommt dann Windowsupdate erhebliche Probleme! ;-)

              Macht nix, Virenscanner und Firewall drauf, dann brauchst du Windowsupdate nicht mehr (ServicePacks kann man auch von CD installieren)...

              E7

        2. Hallo,

          Schon mal aufgefallen? Die (1) kommt immer vor dem Punkt,

          Ja, scheint so zu sein. Das Problem taucht allerdings nicht auf, wenn ich den Download nicht über mein Skript mache, sondern direkt als normalen HTML-Link (<a href...>). Nur soll möglichst verhindert werden, dass der User die Datei aus Unwissenheit im Browser-Fenster öffnet...

          also kannst du vielleicht verhindern Dateien mit mehr als einem Punkt zum Download anzubieten... ;-)

          Vermutlich nicht. :-(

          Dank trotzdem. Gruss, Jens

          1. Hallo.

            Nur soll möglichst verhindert werden, dass der User die Datei aus Unwissenheit im Browser-Fenster öffnet...

            Dann liefere sie doch so aus, dass dies nicht geschieht. Ein anderer MIME-Type oder für den IE gegebenenfalls eine andere Dateiendung sollten doch genügen.
            MfG, at