<?php
/**
* Elements DeMI
*
* This source file is available under the elements DeMI license version 1
*
* @copyright Copyright (c) elements.at New Media Solutions GmbH (https://www.elements.at/)
* @license elements DeMI Lizenz Version 1 (https://www.elements.at/de/demi-lizenz)
*/
namespace Elements\Bundle\DemiFrontendBundle\Controller;
use Pimcore\Model\Asset;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class DownloadController extends AbstractDemiController
{
public function downloadAction(Request $request): BinaryFileResponse
{
$assetId = $request->get('id');
$asset = Asset::getById($assetId);
$filename = $request->get('filenameOverride') ?: $asset?->getFilename();
if ($asset === null) {
throw new NotFoundHttpException('Asset with id ' . $assetId . ' does not exist');
}
$response = new BinaryFileResponse($asset->getTemporaryFile());
$response->headers->set('Content-Type', $asset->getMimetype());
$this->addResponseHeader('X-Robots-Tag', 'noindex,nofollow');
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $filename);
return $response;
}
}