Wieczos Blog

Ich laufe auf Sonnenschein!

Datei Downloads mit dem PHP Framework Slim

by Thomas Wieczorek - Mai 29th, 2012.
Filed under: PHP.

Ich verwende gerade das PHP Microframework Slim in der Version 1.5.2 für ein aktuelles Projekt. Um Downloads zu protokollieren, will ich sie über Slim laufen lassen.

Die folgenden Schritte sollten auch mit der Version 1.6.2 funktionieren:

  1. Die Datei, in meinem Fall ein PDF, wird mit Hilfe der PHP-Funktion readfile in den Speicher geladen.
  2. Der Content-Type wird mit der Methode header() des Slim Response-Objekts auf „application/pdf“ gesetzt. Das Setzen des Content-Types ist wichtig, da ansonsten die Datei vom Browser wie eine Textdatei behandelt wird.
  3. Die Datei wird via body()des Slim Response-Objektes als Antwort geschrieben.
$app = new Slim();
$app->get('/exam.pdf', function () use ( $app ) {
    $downloadFile = readfile('./public/downloads/exam.pdf');
    $response = $app->response();
    $response->header("Content-Type", "application/pdf");
    $response->body($downloadFile);
});

Somit ist die Datei unter http://localhost/exam.pdf verfügbar*.
* Soweit die index.php von Slim unter http://localhost/ verfügbar ist.

Die Protokollierung habe ich hier rausgelassen und mich nur auf den Download konzentriert.

Vorsicht: Diese Umsetzung sollte nur mit kleinen Dateien verwendet werde, weil man bei größeren Dateien Gefahr läuft die PHP Speichergrenze zu sprengen.

Leave a Reply