Datei Download in Schleife

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Sprint

Erfahrenes Mitglied
Hallo zusammen,

ich habe hier ein kleines Script, das eine einzelne Datei herunterlädt. Nun soll das so erweitert werden, daß alle Dateien eines Ordners mit einem Mal geladen werden. Allerdings wird immer nur eine Datei geladen und dann gibt mir der Server die Meldung "Cannot modify header information - headers already sent by ..."

So sieht die Routine im Moment aus:
PHP:
function downFile($zieldatei){
    if ($fd = fopen ($zieldatei, "r")) {
        $fsize = filesize($zieldatei);
        header("Content-type: application/octet-stream");
        header('Content-Disposition: attachment; filename="'.basename($zieldatei).'"');
        header("Content-length: $fsize");
        while(!feof($fd)) {
            $buffer = fread($fd, 2048);
            echo $buffer;
        }
    }
    fclose ($fd);
    return;
}

$dateiliste = array();
if ($handle = @opendir("../lager/".$kdnr.'/'.$pid.'/')){
    while ($file = readdir($handle)){
        if (substr($file, 0, 32) == strtoupper(md5($pid)) && substr($file, 32, 3) != '-NP'){
            $quellpfad = $_SERVER["DOCUMENT_ROOT"].'/lager/'.$kdnr.'/'.$pid.'/';
            $quelldatei = $quellpfad.$file;
            downFile($quelldatei);
        }
    }
}
die();
Ist es möglich, daß das Script alle entsprechenden Dateien auf ein Mal lädt, oder muß ich die Dateien in eine zip Datei packen, um nur eine Datei zu laden?
 
headers already sent
Deine Funktion downfile wird doch mehrfach aufgerufen, und was steht in der Funktion?
PHP:
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="'.basename($zieldatei).'"');
header("Content-length: $fsize");
 
Das hatte ich zu Teil auch gefunden, aber so wie ich das verstehe (und bei mir abläuft), lädt wget die Datei von irgendwo in das Verzeichnis auf dem Server, wo das Script liegt. Die Datei muß aber auf den lokalen Rechner geladen werden. Ich habe auch eine Alternative aus dem ersten Link probiert, aber auch da landet die Datei auf dem Server.
 
Das hatte ich zu Teil auch gefunden, aber so wie ich das verstehe (und bei mir abläuft), lädt wget die Datei von irgendwo in das Verzeichnis auf dem Server, wo das Script liegt. Die Datei muß aber auf den lokalen Rechner geladen werden. Ich habe auch eine Alternative aus dem ersten Link probiert, aber auch da landet die Datei auf dem Server.
un dann vom Server schnappen und zum client kopieren?
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück