This commit is contained in:
Matthieu
2026-03-31 17:57:59 +02:00
parent 1b1dab65b6
commit 476060cf7d
45 changed files with 8547 additions and 648 deletions

View File

@@ -8,6 +8,7 @@ use App\Repository\DocumentRepository;
use App\Service\DocumentStorageService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\HeaderUtils;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use Symfony\Component\Routing\Attribute\Route;
@@ -42,11 +43,15 @@ class DocumentServeController extends AbstractController
return $this->json(['error' => 'Invalid document data.'], 500);
}
$disposition = HeaderUtils::makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $document->getFilename());
return new Response($content, 200, [
'Content-Type' => $document->getMimeType(),
'Content-Disposition' => ResponseHeaderBag::DISPOSITION_INLINE.'; filename="'.$document->getFilename().'"',
'Content-Length' => (string) strlen($content),
'Cache-Control' => 'private, max-age=3600',
'Content-Type' => $document->getMimeType(),
'Content-Disposition' => $disposition,
'Content-Length' => (string) strlen($content),
'Cache-Control' => 'private, max-age=3600',
'X-Content-Type-Options' => 'nosniff',
'Content-Security-Policy' => 'sandbox',
]);
}
@@ -63,6 +68,8 @@ class DocumentServeController extends AbstractController
$document->getFilename()
);
$response->headers->set('Cache-Control', 'private, max-age=3600');
$response->headers->set('X-Content-Type-Options', 'nosniff');
$response->headers->set('Content-Security-Policy', 'sandbox');
return $response;
}
@@ -86,9 +93,11 @@ class DocumentServeController extends AbstractController
return $this->json(['error' => 'Invalid document data.'], 500);
}
$disposition = HeaderUtils::makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $document->getFilename());
return new Response($content, 200, [
'Content-Type' => 'application/octet-stream',
'Content-Disposition' => ResponseHeaderBag::DISPOSITION_ATTACHMENT.'; filename="'.$document->getFilename().'"',
'Content-Disposition' => $disposition,
'Content-Length' => (string) strlen($content),
]);
}