Bonjour,
J'essai d'uploader une image vers une base de données (au format HTML) mais je n'y arrive pas.
Mon code fonctionne pour l'upload mais je récupère le fichier temporaire à la place de mon image.
Si quelqu'un peut m'apporter une solution à ce problème, merci d'avance
Concernant le code, j'utilise Silex (avec composants Symfony, notamment pour le formulaire) et Twig pour la vue.
Je pense que le soucis provient de mon contrôleur, il faut certainement ajouter une méthode mais je ne trouve pas de solution.
Mon contrôleur :
// Add a new commodity (Admin)
// ? comment récupérer le fichier uploader ds la bd à la place du fichier tmp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $app->match('/admin/commodity/add', function(Request $request) use ($app) { $commodity = new Commodity(); $commodityForm = $app['form.factory']->create(CommodityType::class, $commodity); $commodityForm->handleRequest($request); if ($commodityForm->isSubmitted() && $commodityForm->isValid()) { $directory = __DIR__.'/../web/images/upload'; $file = $commodityForm['picture']->getData(); $file->move($directory, $file->getClientOriginalName()); // ici, je récupère bien le bon fichier dans le répertoire souhaité
Concernant le reste du code, rien de particulier. J'utilise la méthode buildForm() de Symfony pour contruire mon formulaire avec pour l'image
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $app['dao.commodity']->update($commodity); // ici, la méthode update insert les variables souhaitées dans ma base de donnée mais je récupère le fichier temporaire donc ko $app['session']->getFlashBag()->add('success', 'Le produit a été mis à jour sur la carte.'); } return $app['twig']->render('commodity_form.html.twig', array( 'title' => 'Ajout d\'un produit', 'commodityForm' => $commodityForm->createView())); })->bind('admin_commodity_add');
Je n'ai pas implémenter de contrainte pour le moment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ->add('picture', FileType::class, array( 'required' => true))
Merci d'avance pour vos retours.
Partager