Skip to content

Instantly share code, notes, and snippets.

@Adrek
Forked from james2doyle/slim-stream-route.php
Last active June 4, 2020 19:26
Show Gist options
  • Save Adrek/c173aefeb18497dd9441b23e8f4ce3d7 to your computer and use it in GitHub Desktop.
Save Adrek/c173aefeb18497dd9441b23e8f4ce3d7 to your computer and use it in GitHub Desktop.
Create a streaming download of a large file with Slim PHP using the build in Stream class
<?php
use Slim\Http\Request;
use Slim\Http\Response;
use Slim\Http\Stream;
$app->get('/stream', function (Request $request, Response $response, array $args) {
// a 100mb file
$path = '../public/files/document.pdf';
$fh = fopen($path, 'rb');
$file_stream = new Stream($fh);
return $response->withBody($file_stream)
->withHeader('Content-Disposition', 'attachment; filename=document.pdf;') // Change to 'inline' if you want to see file
->withHeader('Content-Type', mime_content_type($path))
->withHeader('Content-Length', filesize($path));
})->setOutputBuffering(false);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment