Bonjour !
J'essaye de faire un système d'upload de fichier, insertion en bdd puis lecture de celui-ci !
Pour le moment j'arrive à procéder à l’envoi d'un fichier spécifique déjà stocké en dur dans un répertoire du site via une commande ! Maintenant l’étape suivante que j'aimerais réaliser et que le fichier soit choisis par l'utilisateur !
Du coup, j'ai consulté la doc de SF sur les envois de fichier : https://symfony.com/doc/current/cont...load_file.html et décider de m'en inspirer !
Voici mon controller :
Première erreur que j'ai, qui est lié à la ligne de l'autowire ! J'avoue avoir un peu copié bêtement le code de la doc avec cette ligne et l'avoir mis à ma sauce... J'ai consulté la doc sur l'Autowire et j'avoue ne pas trop comprendre... P'tet un peu dur vu mon niveau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37#[Route('/signalement/upload', name: 'signalement.upload', methods:['GET', 'POST'])] public function upload( Request $request, SluggerInterface $slugger, #[Autowire('%kernel.project_dir%/public/uploads/')] string $fileDirectory ) : Response { $upload = new Upload(); $form = $this->createForm(ImportType::class, $upload); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $file = $form -> get('csvFile')->getData(); if($file){ $fileName = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME); $safeFileName = $slugger->slug($fileName); $newFileName = $safeFileName.'-'.uniqid().'.'.$file->guessExtension(); $upload->setCsvFile($newFileName); $csv = Reader::createFromPath('%kernel.root.dir%/../public/uploads/'.$fileName); $csv->setHeaderOffset(0); $csv->setDelimiter(';'); $csv->setEscape(''); $records = $csv->getRecords(); foreach ($records as $record){ $signalement = (new Signalement()) ->setNumero($record['Identifiant de la fiche']) //etc.. ; $this->em->persist($signalement); } } $this->em->flush(); $this->addFlash('success','Bien ajouté avec succès'); return $this->redirectToRoute('signalement.index'); } return $this->render('pages/signalement/upload.html.twig', ['form' => $form,]); }![]()
Voici l'erreur que je rencontre :
Dans la doc , je n'ai pas trouvé le lien avec cette variable si elle était définie ailleurs etc etc...(à part plus bas dans le try{} mais j'ai essayé aussi avec cette option mais ca ne change rien). Je me demande aussi si l'url était bonne et si je devais avoir un dossier "uploads" dans mon dossier "public"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Controller "App\Controller\SignalementController::upload" requires the "$fileDirectory" argument that could not be resolved. Either the argument is nullable and no null value has been provided, no default value has been provided or there is a non-optional argument after this one.
J'ai bien évidement tenté sans l'Autowire mais la j'ai une autre erreur qui apparait lors de l'envoi du fichier :
Bref j'avoue être un peu perdu entre la doc de SF mes tentatives et mes autres recherche sur internet ! Bref je sèche ! Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 `%kernel.root.dir%/../public/uploads/test`: failed to open stream: No such file or directory.






Répondre avec citation


pfff

Partager