/** * Creates a single file. * * @param UploadedFile $uploadedFile * @param Category $category * @param ObjectManager $em * @param $type * @param null $name */ protected function createFile(UploadedFile $uploadedFile, Category $category, ObjectManager $em, $type, $name = null) { $repo = $this->getDoctrine()->getRepository(File::class); $fileName = $uploadedFile->getClientOriginalName(); $file = $repo->findOneBy(['category' => $category, 'type' => $type]); if ($file) { $file->unlink(); } else { $file = new File(); } $file->setCategory($category); $file->setPath("files/uploads/{$fileName}"); $file->setType($type); $file->setName($name); $file->setCreatedAt(new \DateTime()); $uploadedFile->move($this->get('kernel')->getRootDir() . '/../web/files/uploads', $fileName); $em->persist($file); }
/** * @Route("/myRepoFunctions/filesSubmit/{parent_dir}", name="filesSubmit", defaults={"parent_dir" = null}) */ public function filesSubmitAction($parent_dir, Request $request) { $files = new Files(); $filesForm = $this->createForm(FilesType::class, $files, ['action' => $parent_dir]); $filesForm->add('submit', SubmitType::class, array('label' => 'Upload Files', 'attr' => array('class' => 'btn btn-default pull-right'))); $em = $this->getDoctrine()->getManager(); $user = $this->getUser(); $current_dir = $parent_dir ? $em->getRepository('AppBundle:Directory')->findOneBy(['encodedName' => $parent_dir]) : null; $filesForm->handleRequest($request); if ($filesForm->isValid()) { $filesArray = $files->getFiles(); foreach ($filesArray as $item) { $file = new File(); $file->setDirectory($current_dir); $file->setName($item->getClientOriginalName()); $em->persist($file); $file->uploadFile($item, $user, $current_dir); } $em->flush(); return $this->redirectToRoute('dir_show', ['dir_name' => $parent_dir]); } return false; }