Download erzwingen in PHP

23. Februar 2020

In PHP kann man den Download von Daten erzwingen, indem man den Header-Wert Content-Disposition bei der Serverantwort mitsendet.

Den Inhalt einer Datei als Download erzwingen

Um die Daten als Download bereitzustellen, müssen diese zunächst eingelesen werden. Eine Datei kann mit dem Befehl readfile eingelesen werden. Der Inhalt der Datei wird direkt an den Ausgabepuffer übergeben.

1
2
3
4
5
header('Content-Type: '.mime_content_type($file),true);
header('Content-Disposition: attachment; filename="'.$filename.'"',true);
header('Content-Length: '.filesize($file),true);
readfile($file);
exit();

Mit einem Doppelklick kann der gesamte Code markiert werden.

Daten aus einer Variable als Download erzwingen

Falls die Daten bereits in einer Variable gespeichert sind und und nicht erst aus einer Datei eingelesen werden müssen, kann folgender Code verwendet werden, um den Download zu erzwingen:

1
2
3
4
5
header('Content-Type: text/plain',true);
header('Content-Disposition: attachment; filename="'.$filename.'"',true);
header('Content-Length: '.mb_strlen($content),true);
echo $content;
exit();

Mit einem Doppelklick kann der gesamte Code markiert werden.