src/Elements/Bundle/DemiFrontendBundle/Controller/DownloadController.php line 22

Open in your IDE?
  1. <?php
  2. /**
  3.  * Elements DeMI
  4.  *
  5.  * This source file is available under the elements DeMI license version 1
  6.  *
  7.  *  @copyright  Copyright (c) elements.at New Media Solutions GmbH (https://www.elements.at/)
  8.  *  @license    elements DeMI Lizenz Version 1 (https://www.elements.at/de/demi-lizenz)
  9.  */
  10. namespace Elements\Bundle\DemiFrontendBundle\Controller;
  11. use Pimcore\Model\Asset;
  12. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  15. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  16. class DownloadController extends AbstractDemiController
  17. {
  18.     public function downloadAction(Request $request): BinaryFileResponse
  19.     {
  20.         $assetId $request->get('id');
  21.         $asset Asset::getById($assetId);
  22.         $filename $request->get('filenameOverride') ?: $asset?->getFilename();
  23.         if ($asset === null) {
  24.             throw new NotFoundHttpException('Asset with id ' $assetId ' does not exist');
  25.         }
  26.         $response = new BinaryFileResponse($asset->getTemporaryFile());
  27.         $response->headers->set('Content-Type'$asset->getMimetype());
  28.         $this->addResponseHeader('X-Robots-Tag''noindex,nofollow');
  29.         $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT$filename);
  30.         return $response;
  31.     }
  32. }