From 9684406295f1dc68ed38e7e43127fb7f46822a97 Mon Sep 17 00:00:00 2001 From: biondizzle <32694450+biondizzle@users.noreply.github.com> Date: Thu, 5 Jun 2025 19:54:51 -0400 Subject: [PATCH] Add object upload feature to console --- src/Controller/ConsoleApiController.php | 28 ++++++++++++ templates/console/index.html.twig | 60 ++++++++++++++++++++++--- 2 files changed, 83 insertions(+), 5 deletions(-) diff --git a/src/Controller/ConsoleApiController.php b/src/Controller/ConsoleApiController.php index e3bdc6c..82807af 100644 --- a/src/Controller/ConsoleApiController.php +++ b/src/Controller/ConsoleApiController.php @@ -277,6 +277,34 @@ class ConsoleApiController extends AbstractController ]); } + if ($request->getMethod() === 'POST') { + $objectKey = $request->headers->get('X-Object-Key') + ?? $request->query->get('key') + ?? $request->request->get('object_key'); + + if (empty($objectKey)) { + return new JsonResponse(['error' => 'Missing object key'], 400); + } + + $contentType = $request->headers->get('Content-Type', 'application/octet-stream'); + $file = $request->files->get('file'); + if ($file instanceof \Symfony\Component\HttpFoundation\File\UploadedFile) { + $contentType = $file->getMimeType() ?: $contentType; + $content = file_get_contents($file->getPathname()); + } else { + $content = $request->getContent(); + } + + $object = $this->s3Service->putObject($bucket, $objectKey, $content, $contentType); + + return new JsonResponse([ + 'key' => $object->getObjectKey(), + 'etag' => $object->getEtag(), + 'size' => $object->getSize(), + 'content_type' => $object->getContentType() + ], 201); + } + if ($request->getMethod() === 'DELETE') { $data = json_decode($request->getContent(), true); $keys = $data['keys'] ?? []; diff --git a/templates/console/index.html.twig b/templates/console/index.html.twig index f510f49..60727b4 100644 --- a/templates/console/index.html.twig +++ b/templates/console/index.html.twig @@ -529,9 +529,12 @@
Objects -
- + +
@@ -630,6 +633,27 @@
+ + +