diff --git a/Controller/FileController.php b/Controller/FileController.php index 54515215b..4d84ea975 100644 --- a/Controller/FileController.php +++ b/Controller/FileController.php @@ -14,7 +14,7 @@ use Claroline\CoreBundle\Form\FileType; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\JsonResponse; -use Symfony\Component\HttpFoundation\StreamedResponse; +use Symfony\Component\HttpFoundation\BinaryFileResponse; use Symfony\Component\Security\Core\Exception\AccessDeniedException; use Symfony\Component\HttpFoundation\Response; use Claroline\CoreBundle\Entity\Resource\File; @@ -42,23 +42,19 @@ public function streamMediaAction(ResourceNode $node) { $collection = new ResourceCollection(array($node)); $this->checkAccess('OPEN', $collection); - $file = $this->get('claroline.manager.resource_manager')->getResourceFromNode($node); - $path = $this->container->getParameter('claroline.param.files_directory') . DIRECTORY_SEPARATOR - . $file->getHashName(); - $response = new StreamedResponse(); - $response->setCallBack( - function () use ($path) { - readfile($path); - } - ); - + // free the session as soon as possible + // see https://github.com/claroline/CoreBundle/commit/7cee6de85bbc9448f86eb98af2abb1cb072c7b6b $this->get('session')->save(); + $file = $this->get('claroline.manager.resource_manager')->getResourceFromNode($node); + $path = $this->container->getParameter('claroline.param.files_directory').DIRECTORY_SEPARATOR + .$file->getHashName(); + + $response = new BinaryFileResponse($path); $response->headers->set('Content-Type', $node->getMimeType()); - $response->send(); - return new Response(); + return $response; } /**