src/Controller/AssetController.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\Controller;//A voir
  4. use Symfony\Component\HttpFoundation\BinaryFileResponse;//A voir
  5. use Symfony\Component\HttpFoundation\JsonResponse;//A voir
  6. use Symfony\Component\HttpFoundation\Request;
  7. use App\Controller\LangController;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController//Test
  9. class AssetController extends AbstractController//Controller
  10. {
  11.     public function __construct(
  12.         private LangController $langService
  13.     ){
  14.     }
  15.     
  16.     public function index()
  17.     {
  18.         return $this->redirectToRoute('actualites_home');
  19.     }
  20.     public function show_guide(Request $request$filename)
  21.     {
  22.         $session $request->getSession();
  23.         $lang $session->get('_locale');
  24.            if($lang == null) {
  25.             $this->langService->setLocale($request'fr');
  26.             $lang 'fr';
  27.         }
  28.         $path $this->getParameter('kernel.project_dir'). "/public/build/lang/".$lang."/pdf/";
  29.         
  30.         return new BinaryFileResponse($path.$filename);
  31.     }
  32.     public function abx_bmi_references($reference)
  33.     {
  34.         $path $this->getParameter('kernel.project_dir'). "/public/build/pdf/abxbmi_references/";
  35.         
  36.         return new BinaryFileResponse($path.$reference);
  37.     }
  38.     public function show_pdf(Request $request$filename)
  39.     {
  40.         $session $request->getSession();
  41.         $lang $session->get('_locale');
  42.         if($lang == null) {
  43.             $this->langService->setLocale($request'fr');
  44.             $lang 'fr';
  45.         }
  46.         $path $this->getParameter('kernel.project_dir'). "/public/build/lang/".$lang."/pdf/";
  47.         
  48.         return new BinaryFileResponse($path.$filename);
  49.     }
  50.     public function upload(Request $request)
  51.     {
  52.         $file $request->files->get('file');
  53.         $session $request->getSession();
  54.         if (!$file) {
  55.             return new JsonResponse(['error' => 'Aucun fichier reçu.'], Response::HTTP_BAD_REQUEST);
  56.         }
  57.         // Vérifier l'extension et le type MIME (sécurité)
  58.         $allowedExtensions = ['jpg''jpeg''png''gif''webp'];
  59.         $allowedMimeTypes = ['image/jpeg''image/png''image/gif''image/webp'];
  60.         $extension $file->guessExtension();
  61.         $mimeType $file->getMimeType();
  62.         if (!in_array($extension$allowedExtensions) || !in_array($mimeType$allowedMimeTypes)) {
  63.             return new JsonResponse(['error' => 'Format de fichier non autorisé.'], Response::HTTP_BAD_REQUEST);
  64.         }
  65.         // Générer un nom de fichier unique
  66.         $filename uniqid('img_') . '.' $extension;
  67.         $uploadDir $this->getParameter('kernel.project_dir') . '/public/upload/actualites/images/'.$session->get('client_id_adada').'/source/';
  68.         // Déplacer le fichier vers le dossier /public/uploads
  69.         try {
  70.             $file->move($uploadDir$filename);
  71.         } catch (FileException $e) {
  72.             return new JsonResponse(['error' => 'Erreur lors de l\'enregistrement du fichier.'], Response::HTTP_INTERNAL_SERVER_ERROR);
  73.         }
  74.         // 🔥 Modifier le chemin retourné en incluant le dossier du projet
  75.         $projectBasePath $request->getBasePath(); // => "/monProjet" en local
  76.         $imageUrl $projectBasePath '/upload/actualites/images/'.$session->get('client_id_adada').'/source/' $filename;
  77.         // Retourner l'URL de l'image pour TinyMCE
  78.         return new JsonResponse(['location' => $imageUrl]);
  79.     }
  80. }