src/CoreBundle/Controller/Admin/UploadedFileController.php line 36

Open in your IDE?
  1. <?php
  2. namespace App\CoreBundle\Controller\Admin;
  3. use App\CoreBundle\Model\UploadedFile\UploadedFileFacade;
  4. use League\Flysystem\FilesystemInterface;
  5. use App\CoreBundle\Component\HttpFoundation\DownloadFileResponse;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. class UploadedFileController extends AdminBaseController
  8. {
  9.     /**
  10.      * @var UploadedFileFacade
  11.      */
  12.     private $uploadedFileFacade;
  13.     /**
  14.      * @var FilesystemInterface
  15.      */
  16.     private $filesystem;
  17.     public function __construct(
  18.         UploadedFileFacade $uploadedFileFacade,
  19.         FilesystemInterface $filesystem
  20.     ) {
  21.         $this->uploadedFileFacade $uploadedFileFacade;
  22.         $this->filesystem $filesystem;
  23.     }
  24.     /**
  25.      * @Route("/file/{uploadedFileId}/{uploadedFilename}", name="admin_uploaded_file_download", requirements={"uploadedFileId" = "\d+"}, methods={"get"})
  26.      * @param int $uploadedFileId
  27.      * @param string $uploadedFilename
  28.      * @return DownloadFileResponse
  29.      */
  30.     public function downloadAction(int $uploadedFileIdstring $uploadedFilename): DownloadFileResponse
  31.     {
  32.         $uploadedFileSlug pathinfo($uploadedFilenamePATHINFO_FILENAME);
  33.         $uploadedFileExtension pathinfo($uploadedFilenamePATHINFO_EXTENSION);
  34.         $uploadedFile $this->uploadedFileFacade->getByIdSlugAndExtension($uploadedFileId$uploadedFileSlug$uploadedFileExtension);
  35.         $filePath $this->uploadedFileFacade->getAbsoluteUploadedFileFilepath($uploadedFile);
  36.         return new DownloadFileResponse(
  37.             $uploadedFile->getNameWithExtension(),
  38.             $this->filesystem->read($filePath),
  39.             $this->filesystem->getMimetype($filePath)
  40.         );
  41.     }
  42. }