From 0aecfd62eb6d4c0fb3147239abc2af82acc66498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Melaine=20G=C3=A9rard?= Date: Wed, 19 Feb 2025 14:23:39 +0100 Subject: [PATCH] =?UTF-8?q?:sparkles:=20Pr=C3=A9visualisation=20du=20fichi?= =?UTF-8?q?er=20si=20clic=20sur=20le=20nom=20du=20fichier=20+=20ajout=20ic?= =?UTF-8?q?one=20voir?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Controller/FilesController.php | 21 ++++++++++++++------- templates/files/index.html.twig | 3 ++- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/Controller/FilesController.php b/src/Controller/FilesController.php index ef79649..5ddf76f 100755 --- a/src/Controller/FilesController.php +++ b/src/Controller/FilesController.php @@ -89,7 +89,10 @@ class FilesController extends AbstractController 'last_modified' => $file['lastModified'], 'size' => $file['fileSize'] ?? null, 'url' => 'file' === $file['type'] - ? $this->generateUrl('app_files_app_file_proxy', ['filename' => $file['path']], UrlGeneratorInterface::ABSOLUTE_URL) + ? $this->generateUrl('app_files_app_file_proxy', ['filename' => $file['path'], 'preview' => false], UrlGeneratorInterface::ABSOLUTE_URL) + : $this->generateUrl('app_files_index', ['path' => $file['path']]), + 'previewUrl' => 'file' === $file['type'] + ? $this->generateUrl('app_files_app_file_proxy', ['filename' => $file['path'], 'preview' => true], UrlGeneratorInterface::ABSOLUTE_URL) : $this->generateUrl('app_files_index', ['path' => $file['path']]), ]; } @@ -114,7 +117,7 @@ class FilesController extends AbstractController * @throws FilesystemException */ #[Route('/file-proxy', name: 'app_file_proxy')] - public function fileProxy(Filesystem $defaultAdapter, #[MapQueryParameter('filename')] string $filename) + public function fileProxy(Filesystem $defaultAdapter, #[MapQueryParameter('filename')] string $filename, #[MapQueryParameter('preview')] bool $preview) { $file = $this->normalizePath($filename); @@ -134,6 +137,7 @@ class FilesController extends AbstractController $mimetype = 'application/octet-stream'; } + $response = new StreamedResponse(static function () use ($file, $defaultAdapter): void { $outputStream = fopen('php://output', 'w'); $fileStream = $defaultAdapter->readStream($file); @@ -141,11 +145,14 @@ class FilesController extends AbstractController }); $response->headers->set('Content-Type', $mimetype); - $disposition = HeaderUtils::makeDisposition( - HeaderUtils::DISPOSITION_ATTACHMENT, - basename($file) - ); - $response->headers->set('Content-Disposition', $disposition); + + if (!$preview) { + $disposition = HeaderUtils::makeDisposition( + HeaderUtils::DISPOSITION_ATTACHMENT, + basename($file) + ); + $response->headers->set('Content-Disposition', $disposition); + } return $response; } diff --git a/templates/files/index.html.twig b/templates/files/index.html.twig index 72290a5..c2bb876 100755 --- a/templates/files/index.html.twig +++ b/templates/files/index.html.twig @@ -54,7 +54,7 @@ {% else %} {% endif %} - {{ file.path|basename }} + {{ file.path|basename }} {% if file.type == 'file' %} @@ -82,6 +82,7 @@ {% if file.type == 'file' %} + {% if is_granted('file_write', parentDir) %}