Jessica: Link Dateiendung *.rar

Hallo!

Ich habe ein kleines Problem mit meinem Download-Skript. Wir bieten auf unserer Website Kunden zusätzl. zu *.zip-Dateien auch *.rar-Versionen zum Download an. Beim Aufruf der URL der *.zip-Dateien gibt es keine Probleme. Beim Klick auf die Dateien mit der Endung *.rar, werden allerdings die Archive geöffnet und die Strings in das Browserfenster extrahiert. Gibt bei Links mit *.rar irgendetwas besonderes zu beachten ?

Gruss Jessica

  1. gibts das schon im netz zum testen? das müsste doch mit den jeweiligen interneteinstellunge zusammenhängen, ob dateien mit der und der öffnung gleich im browserfenster geöffnet werden. hätte es deshalb gerne mal getestet

    gruß, frank

    1. gibts das schon im netz zum testen? »»

      Ist wohl nur ein Problem unter Netscape 7.1 (?). Über den MS IE, Opera und Mozilla gehts. Irgendeine Idee ?

      1. wie gesagt, ich vermute, dass es spezifische individuelle browsereinstellungen sind, also vielleicht nur mit deinem browser so passiert, aber nicht mit meinem. ich meine, dass es im browser einzustellen geht, welche datei-endungen er einfach öffnen soll und welche er zum download anbietet bzw. wie er mit unbekannten verfährt...;

  2. Hallo,

    Beim Klick auf die Dateien mit der Endung *.rar, werden allerdings die Archive geöffnet und die Strings in das Browserfenster extrahiert.

    Was macht das "Download-Skript"?

    A) Falls Du die Dateien mit PHP irgendwie "durchschleust", z.B. mit fpassthru() oder so,
    musst Du den korrekten MIME-Type per HTTP-Header vorausschicken, z.B.
    header("Content-type: application/octet-stream");
    Lies dazu auch:
    http://www.php.net/manual/de/function.header.php
    http://www.dclp-faq.de/q/q-fehler-header.html

    B) Falls Du direkt auf die Dateien verlinkst:

    Vermutlich sendet der Webserver die *.rar-Dateien mit dem MIME-Type text/html.

    Wenn die Seite online verfuegbar ist, kannst Du ja mal mit
    http://cgi.w3.org/cgi-bin/headers
    testen, mit welchem MIME-Type die Datei geliefert wird.

    Dann musst Du den Webserver entsprechend konfigurieren (lassen).

    Apache z.B. in httpd.conf oder .htaccess:
    AddType application/octet-stream .rar

    HTH, Gruesse,

    Thomas

  3. Hi,

    wie von den anderen schon erwähnt sind die Einstellungen beim Client dafür verantworlich was mit einer Datei passiert.
    Du kannst aber einen bestimmten Mime-Typ mit PHP erzwingen, also z.B.

    <?
        header("Content-Type: application/octet-stream");
        header("Content-Disposition: ".
         (!strpos($HTTP_USER_AGENT,"MSIE 5.5")?"attachment; ":"").
         "filename=".$DOWNLOAD_DATEI);
        header("Content-Transfer-Encoding: binary");
        header("Cache-Control: post-check=0, pre-check=0");

    echo file_get_contents($DOWNLOAD_DATEI);
    ?>

    ... das müsste funktionieren (aufzurufen mit "scriptname.php?DOWNLOAD_DATEI=irgendwas.rar").

    HTH,
    Max

    1. Hallo,

      echo file_get_contents($DOWNLOAD_DATEI);
      ... das müsste funktionieren (aufzurufen mit "scriptname.php?DOWNLOAD_DATEI=irgendwas.rar").

      Sehr, sehr gefaehrlich, den Dateinamen einfach so zu uebernehmen.
      @Jessica: Finger weg von dieser Loesung!
      bzw. mache die Loesung sicher (wenn Du weisst, was Du tust).

      @Max: Lies _dringend_ mal
      http://www.dclp-faq.de/ch/ch-security.html
      insbesondere
      http://www.dclp-faq.de/q/q-sicherheit-parameter.html

      Zudem duerfte obiges (zum Glueck) auf modernen PHP-Installationen gar nicht
      mehr funktionieren, wenn register_globals auf OFF ist.
      http://www.dclp-faq.de/q/q-sicherheit-global.html

      Gruesse,

      Thomas

      1. Sehr, sehr gefaehrlich, den Dateinamen einfach so zu uebernehmen.

        Das sollte ja auch nur das _Prinzip_ verdeutlichen! Um auszuprobieren obs dann auf allen Browsern so funktioniert

        Ok, ich hätte drauf hinweisen sollen, das man das so nicht 1:1 übernehmen sollte für eine fertige Lösung ...

        mehr funktionieren, wenn register_globals auf OFF ist.

        ist bei den meisten Providern (zumindest diejenigen die ich bisher benutzt habe) nicht der Fall.

        Max