diff --git a/config/services.yaml b/config/services.yaml index 2d6a76f94dce138741e2d63ae83a11c1879031d9..b94693fdbf9061dac0ca1ae39c5da8d4464a842f 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 38e1febcaacd3f2569510e0dfa86706324b0db53..6c3fa5db6f6fca5d523143f59029efd82fdb230b 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 0000000000000000000000000000000000000000..8bd280f46e18c59b984390466290daf7740db2ee --- /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