From 22848e15cf0037ef8b0f421fc79f4757ada05bfe Mon Sep 17 00:00:00 2001 From: "a.shamavov" <a.shamavov@iqdev.digital> Date: Tue, 16 Apr 2024 12:30:40 +0500 Subject: [PATCH] fix --- config/services.yaml | 3 +++ src/Controller/HomeController.php | 9 ++++++--- src/Service/FileUploader.php | 33 +++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 src/Service/FileUploader.php diff --git a/config/services.yaml b/config/services.yaml index 2d6a76f..b94693f 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -22,3 +22,6 @@ services: # add more service definitions when explicit configuration is needed # please note that last definitions always *replace* previous ones + App\Service\FileUploader: + arguments: + $targetDirectory: '%kernel.project_dir%/public/files/' \ No newline at end of file diff --git a/src/Controller/HomeController.php b/src/Controller/HomeController.php index 38e1feb..6c3fa5d 100644 --- a/src/Controller/HomeController.php +++ b/src/Controller/HomeController.php @@ -3,6 +3,7 @@ namespace App\Controller; use App\Action\Functions; +use App\Service\FileUploader; use App\Requests\{ SortPriceRequest, SearchRequest, @@ -12,6 +13,7 @@ use App\Requests\{ }; use DateTimeImmutable; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Attribute\Route; @@ -104,10 +106,11 @@ class HomeController extends AbstractController } #[Route('/readLogFile', name: 'readLogFile')] - public function readLogFile(Request $request): Response + public function readLogFile(Request $request, FileUploader $fileUploader): Response { - $filePath = $this->getParameter('kernel.project_dir') . "/public/files/"; - $text = $this->functions->readLogFile($filePath . $fileName); + $file = $request->files->get('file'); + $fileName = $fileUploader->upload($file); + $text = $this->functions->readLogFile($fileName); $response = new JsonResponse($text); $response->setEncodingOptions(JSON_UNESCAPED_UNICODE); return $response; diff --git a/src/Service/FileUploader.php b/src/Service/FileUploader.php new file mode 100644 index 0000000..8bd280f --- /dev/null +++ b/src/Service/FileUploader.php @@ -0,0 +1,33 @@ +<?php + +namespace App\Service; + +use Symfony\Component\HttpFoundation\File\Exception\FileException; +use Symfony\Component\HttpFoundation\File\UploadedFile; + +class FileUploader +{ + private $targetDirectory; + + public function __construct($targetDirectory) + { + $this->targetDirectory = $targetDirectory; + } + + public function upload(UploadedFile $file) + { + $fileName = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME) .'.'. $file->guessExtension(); + try { + $file->move($this->getTargetDirectory(), $fileName); + } catch (FileException $e) { + throw new FileException($e->getMessage()); + } + + return $this->getTargetDirectory() . $fileName; + } + + public function getTargetDirectory() + { + return $this->targetDirectory; + } +} \ No newline at end of file -- GitLab