fileRepository->find($id); if (empty($file)) { throw new RuntimeException("File " . $id . " does not exist; abort."); } if ($file->getStatus() !== FileStatusEnum::READY()->getValue()) { throw new RuntimeException("File " . $id . " has " . $file->getStatus() . " status; abort."); } // Read the file $token = $this->security->getToken(); $content = $this->fileManager->read($file, $token); // Build the response and attach the file to it // @see https://symfony.com/doc/current/components/http_foundation.html#serving-files $response = new Response($content); $response->headers->set('Charset', 'UTF-8'); $response->headers->set('Access-Control-Expose-Headers', 'Content-Disposition'); if (!empty($file->getMimeType())) { $response->headers->set('Content-Type', $file->getMimeType()); } $response->headers->set( 'Content-Disposition', HeaderUtils::makeDisposition(HeaderUtils::DISPOSITION_ATTACHMENT, $file->getName()) ); return $response; } }