PHP: Weiterleitung mit headers() und "Speichern unter..."



  • hi... ich moechte die Downloads auf meiner Homepage mit folgendem Code realisieren (Datei heisst downloadFile.php):

    <?php
    /*
     * log the download, then let the user download the file he demands
     */
    
    include ("include/main.inc.php");
    
    if (isset($_GET['file']))
    {
    	$file = $_GET['file'];
    	logFileDownload($file);
    	header("Location: http://" . $_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).$file);
    }
    
    ?>
    

    Ein DL-Link wuerde dann z. B. so aussehen:

    http://127.0.0.1/home/downloadFile.php?file=foo.zip

    Das Problem:

    wenn jemand jetzt mit "Rechtsklick-auf-Link -> Ziel speichern unter" die Datei herunterladen moechte, wird als Standard-Dateiname immer "downloadFile.php" vorgeschlagen... wie kann ich das aendern? 😕



  • Das ist ja auch richtig. Das Ziel des Links ist deine download.php

    ich wüsste jetzt nicht ob man das umgehen kann. Das Ziel wird immer deine download.php bleiben, die leitet ja dann erst weiter.
    Du könntest den Link höchstens direkt auf das Ziel zeigen lassen, dann kannste aber nimmer zählen. Das weisst aber sicher schon selbst 😉



  • Tow-B.de schrieb:

    Das ist ja auch richtig. Das Ziel des Links ist deine download.php

    ich wüsste jetzt nicht ob man das umgehen kann. Das Ziel wird immer deine download.php bleiben, die leitet ja dann erst weiter.
    Du könntest den Link höchstens direkt auf das Ziel zeigen lassen, dann kannste aber nimmer zählen. Das weisst aber sicher schon selbst 😉

    *g*, jupp, soweit war ich schon 😃

    Ich kenn aber einige Seiten, die sowas in der Art haben.... 😕 mir faellt grad keine Beispiel-Seite ein 🙂 ... na ja, zumindest glaub ich, das schon ein paar mal gesehen zu haben, deswegen nahm ich an, es gab einen Weg das zu tun... 😞
    egal... thx anyway 🙂



  • Najo,

    a bissl was kann ma da glaub ich scho unternehmen.

    Hab's ned getestet, aber:
    änder das hier mal entsprechend ab und schicks mit dem http-header mit

    Content-Disposition: attachment; filename=Bild3.jpg
    

    vgl. hier: http://www.perlboard.de/cgi-bin/perlboard.pl?action=show_topic&id=7188&ant=4

    Funzt aber glaub ich ned in allen Browsern



  • Thx fuer den Tip, genau sowas hab ich gesucht 🙂

    EDIT: ok, jetzt funktioniert das Ganze... Wenn sonst noch jemand den Code braucht:

    <?php
    /*
     * log the filedownload, then let the user download the file he demands
     */
    
    include ("include/main.inc.php");
    
    if (isset($_GET['file']))
    {
    	$file = $_GET['file'];
    	$filename = basename($file);
    	logFileDownload($filename);
    	$header = '';
    	$header .= "Content-Type: application/octet-stream;\n";
    	$header .= "Content-Length: " . filesize($file) . ";\n";
    	$header .= "Content-Disposition: attachment; ";
    	$header .= "filename=\"$filename\" ";
    	header("$header");
    	readfile($file);
    }
    
    ?>
    

    🙂



  • @flenders
    Wär das nicht was für die FAQ?



  • Könnte man machen, wobei das jetzt jetzt nicht mehr dem ursprünglichen Thema (Weiterleitung mit header) entspricht, da bei dieser Lösung ja jetzt der komplette Download über das Script läuft 😉



  • coole Sache 👍



  • @flenders
    Du musst ja nicht den ganzen Thread dorthin verschieben.
    Wie wärs wenn du einfach die Lösung mit einer kleinen Beschreibung (um welches Problem es ging vielleicht) und einem passenden Titel in der FAQ anlegst?



  • sorry, dass ich mich erst jetzt wieder melde - war ein paar Tage im Urlaub 🙂

    Das Problem ist eigentlich nur, dass bis jetzt noch niemand eine Lösung für das ursprüngliche Problem gepostet hat und ich selber auch keine weiß 🙄


Anmelden zum Antworten