Frage

Ich habe die folgende Funktion, um eine Datei herunterzuladen:

static public function download($file, $options=array()) {
    $content = (isset($options['content'])) ? $options['content'] : '';
    $contentType = (isset($options['contentType'])) ? $options['contentType'] : '';
    header('Cache-Control: public');
    header('Content-Description: File Transfer');
    header('Content-Disposition: attachment; filename='.File::filename($file));
    header('Content-Type: '.$contentType);
    header('Content-Transfer-Encoding: binary');
    if ($content!='') {
        echo $content;
    } else {
        readfile($file);
    }
}

Ich sende eine PDF -Datei und ContentType = "Anwendung/PDF". Das Problem ist, dass wenn ich versuche, die heruntergeladene PDF -Datei zu öffnen, heißt es: "Es gab einen Fehler, der dieses Dokument öffnet. Die Datei kann beschädigt sein." Ist seltsam, weil ich die Originaldatei öffnen kann und sie genau gleich aussehen (Dateiname, Größe usw.)

War es hilfreich?

Lösung

Stellen Sie sicher, dass es keine Ausgabe gibt, bevor diese Funktion ausgeführt wird, und verwenden Sie für ein gutes Maß die exit Konstrukt am Ende dieser Funktion :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top