Dateidownload per Ajax und PHP

Sprint

Erfahrenes Mitglied
Hallo zusammen,

ich habe hier ein sehr merkwürdiges Problem mit dem Download einer ZIP Datei, die vorher erzeugt wird. Ich nehme jetzt mal an, daß es an Ajax liegt. Zuerst wollte ich Erzeugung und den Download in ein Script packen, was aber überhaupt nicht funktioniert hat.

Irgendwann war ich dann soweit, daß die ZIP Datei erzeugt, aber nicht runtergeladen wurde. Ich habe dann den Download Teil in eine separate Datei gesetzt. Wenn ich die dann über den Browser aufrufe, wird die Datei geladen, wenn ich sie über Ajax aufrufe, passiert nichts. Ich habe aber weder in der Browserkonsole noch in den Serverlogs irgendwelche Fehler.

Das ist der komplette Vorgang:
Javascript:
function pdfzip(lid){
    $("#loader-wrapper").fadeIn("normal");
    $.ajax({
        type: "POST",
        url: "makezip.php",
        data: {lid: lid},
        async: false,
        success: function(data){
            pdfdown(lid);
        }
    });
}

function pdfdown(lid){
    $.ajax({
        type: "POST",
        url: "zipdown.php",
        data: {lid: lid},
        async: false,
        success: function(data){
            $("#loader-wrapper").fadeOut("normal");
        }
    });
}
Und so sieht das Download Script aus:
PHP:
$lid = 1;
$kdnr = 50132;

/*
@$lid = preg_replace( "/[^0-9]/im", "", $_POST['lid']);

if (substr($_SESSION['usernr'],0,1) >= 5)
    $kdnr = substr($_SESSION['usernr'],0,5);
else
    $kdnr = substr($_SESSION['usernr'],0,6);
*/
$zipordner = 'uploads/'.$kdnr.'/';
$zip_name = $kdnr.'-'.$lid.'.zip';

if(file_exists($zipordner.$zip_name)) {
    if ($fd = fopen ($zipordner.$zip_name, "r")) {
        $fsize = filesize($zipordner.$zip_name);
        header("Content-type: application/octet-stream");
        header('Content-Disposition: attachment; filename="'.$zip_name.'"');
        header("Content-length: $fsize");
        while(!feof($fd)) {
            $buffer = fread($fd, 2048);
            echo $buffer;
        }
        fclose ($fd);
    }else
        die('error1');
}
Normalerweise werden die Daten per Post übergeben bzw. aus aus der Session extrahiert. Das spielt hier aber auch keine Rolle. Die übergebenen Daten sind korrekt. Ich kann auch ausschließen, daß die Erzeugung der ZIP Datei zu lange braucht. Die Funktion wird auch aufgerufen und das Ausblenden des Wrappers ausgeführt.
Hat jemand eine Idee, woran das liegen könnte?
 
Sorry, war ein paar Tage unterwegs.

Das kling sinnvoll, was du sagst. Ich habe mich jetzt mal mit dem Beispiel beschäftigt, das da gezeigt wird, aber es wird wohl noch eine Weile dauern, bis ich das kapiert habe. Auf jeden Fall danke für deine Hilfe.
 

Neue Beiträge

Zurück