Vue event bus, uploading files handles from file service.

This commit is contained in:
krzysiej
2022-06-02 13:43:08 +02:00
parent 1a5445a84a
commit e5562cddb1
8 changed files with 69 additions and 52 deletions

View File

@@ -10,6 +10,7 @@ use App\Repository\BookRepository;
use App\Repository\FileRepository;
use App\Service\FileService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
@@ -86,27 +87,15 @@ class BookController extends AbstractController
}
#[Route('/{id}', name: 'app_book_show', methods: ['GET', 'POST'])]
public function show(Book $book, Request $request, FileRepository $fileRepository): Response
public function show(Book $book, Request $request, FileRepository $fileRepository, FileService $fileService): Response
{
$fileForm = $this->createForm(FileType::class);
$fileForm->handleRequest($request);
if ($fileForm->isSubmitted() && $fileForm->isValid()) {
/** @var \Symfony\Component\HttpFoundation\File\UploadedFile[] $ebooks */
/** @var UploadedFile[] $ebooks */
$ebook = $request->files->get('file')['file'];
$file = new File();
$file->setFileName(trim($ebook->getClientOriginalName()));
$file->setFileSize($ebook->getSize());
$file->setExtension($ebook->guessClientExtension());
$file->setBook($book);
$fileRepository->add($file, true);
$ebook->move(
$this->getParameter('book_files'),
'ebook_' . $book->getId() . '_' .
md5($file->getFileName()) . '.' .
$file->getExtension()
);
$fileService->saveFile($ebook, $book);
}
return $this->renderForm('book/show.html.twig', [
@@ -127,7 +116,8 @@ class BookController extends AbstractController
Request $request,
Book $book,
BookRepository $bookRepository,
FileRepository $fileRepository
FileRepository $fileRepository,
FileService $fileService
): Response {
$form = $this->createForm(BookType::class, $book);
$form->handleRequest($request);
@@ -141,23 +131,11 @@ class BookController extends AbstractController
);
}
/** @var \Symfony\Component\HttpFoundation\File\UploadedFile[] $ebooks */
/** @var UploadedFile[] $ebooks */
$ebooks = $request->files->get('book')['ebook'];
if (count($ebooks) > 0) {
foreach ($ebooks as $ebook) {
$file = new File();
$file->setFileName(trim($ebook->getClientOriginalName()));
$file->setFileSize($ebook->getSize());
$file->setExtension($ebook->guessClientExtension());
$file->setBook($book);
$fileRepository->add($file, true);
$ebook->move(
$this->getParameter('book_files'),
'ebook_' . $book->getId() . '_' .
md5($file->getFileName()) . '.' .
$file->getExtension()
);
$fileService->saveFile($ebook, $book);
}
}