From 374e01cf1d544c9b73314b11ad82ae13fb8a2b58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Wed, 19 Mar 2025 08:22:53 +0100 Subject: [PATCH] feat: organize uploads into subfolders --- src/Service/Upload/UploadHandler.php | 5 ++++- src/Service/Upload/UploadNamer.php | 7 +++++-- templates/administrative/document/modal_check.html.twig | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Service/Upload/UploadHandler.php b/src/Service/Upload/UploadHandler.php index e30940d..58ea203 100644 --- a/src/Service/Upload/UploadHandler.php +++ b/src/Service/Upload/UploadHandler.php @@ -10,6 +10,7 @@ use Oneup\UploaderBundle\Uploader\Orphanage\OrphanageManager; use Symfony\Component\Filesystem\Exception\IOException; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\HttpFoundation\RequestStack; +use function Symfony\Component\String\s; class UploadHandler { @@ -119,7 +120,9 @@ class UploadHandler public function getUploadFilepath(Upload $upload): string { - return sprintf('%s/uploads/%s/%s', $this->projectDir, $upload->getType(), $upload->getFilename()); + $folder = substr($upload->getFilename(), 0, 1); + + return sprintf('%s/uploads/%s/%s/%s', $this->projectDir, $upload->getType(), $folder, $upload->getFilename()); } public function getTempUploadFilepath(UploadDto $uploadDto, string $uploadSessionId): string diff --git a/src/Service/Upload/UploadNamer.php b/src/Service/Upload/UploadNamer.php index 750a1fa..eb8ab9d 100644 --- a/src/Service/Upload/UploadNamer.php +++ b/src/Service/Upload/UploadNamer.php @@ -10,6 +10,9 @@ class UploadNamer implements NamerInterface { public function name(FileInterface $file): string { - return sprintf('%s.%s', Uuid::v4(), strtolower($file->getExtension())); + $fileUuid = Uuid::v7(); + $folder = substr($fileUuid, 0, 1); + + return sprintf('%s/%s.%s', $folder, $fileUuid, strtolower($file->getExtension())); } -} \ No newline at end of file +} diff --git a/templates/administrative/document/modal_check.html.twig b/templates/administrative/document/modal_check.html.twig index 1089cd3..b19eefd 100644 --- a/templates/administrative/document/modal_check.html.twig +++ b/templates/administrative/document/modal_check.html.twig @@ -5,6 +5,7 @@ {% block content %} {{ form_start(form, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML' } }) }}

@@ -24,4 +25,4 @@ {{ form_rest(form) }} {{ form_end(form) }} -{% endblock %} \ No newline at end of file +{% endblock %}