From: Johan Cwiklinski Date: Mon, 14 Sep 2020 09:56:17 +0000 (+0200) Subject: Fix dynamic file display; closes #1486 X-Git-Tag: 0.9.4.1~36 X-Git-Url: https://git.agnieray.net/?a=commitdiff_plain;h=c5d73cf39b7fe67cd92d1a57ff27871b65fc9e76;p=galette.git Fix dynamic file display; closes #1486 --- diff --git a/galette/lib/Galette/Controllers/Crud/MembersController.php b/galette/lib/Galette/Controllers/Crud/MembersController.php index d06c587b6..ab5b90be4 100644 --- a/galette/lib/Galette/Controllers/Crud/MembersController.php +++ b/galette/lib/Galette/Controllers/Crud/MembersController.php @@ -475,15 +475,24 @@ class MembersController extends CrudController if (file_exists(GALETTE_FILES_PATH . $filename)) { $type = File::getMimeType(GALETTE_FILES_PATH . $filename); - $response = $response + + $response = $response->withHeader('Content-Description', 'File Transfer') ->withHeader('Content-Type', $type) ->withHeader('Content-Disposition', 'attachment;filename="' . $args['name'] . '"') - ->withHeader('Pragma', 'no-cache'); - $response->write(readfile(GALETTE_FILES_PATH . $filename)); - return $response; + ->withHeader('Pragma', 'no-cache') + ->withHeader('Content-Transfer-Encoding', 'binary') + ->withHeader('Expires', '0') + ->withHeader('Cache-Control', 'must-revalidate') + ->withHeader('Pragma', 'public'); + + $stream = fopen('php://memory', 'r+'); + fwrite($stream, file_get_contents(GALETTE_FILES_PATH . $filename)); + rewind($stream); + + return $response->withBody(new \Slim\Http\Stream($stream)); } else { Analog::log( - 'A request has been made to get an exported file named `' . + 'A request has been made to get a dynamic file named `' . $filename . '` that does not exists.', Analog::WARNING );