Added twig extension to format file size, links to download and delete files attached to the book.
This commit is contained in:
@@ -99,9 +99,9 @@ class BookController extends AbstractController
|
||||
|
||||
$ebook->move(
|
||||
$this->getParameter('book_files'),
|
||||
'ebook_' . $book->getId() . '_' . md5(
|
||||
$ebook->getClientOriginalName()
|
||||
) . '.' . $ebook->guessClientExtension()
|
||||
'ebook_' . $book->getId() . '_' .
|
||||
md5($file->getFileName()) . '.' .
|
||||
$file->getExtension()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -126,16 +126,4 @@ class BookController extends AbstractController
|
||||
|
||||
return $this->redirectToRoute('app_book_index', [], Response::HTTP_SEE_OTHER);
|
||||
}
|
||||
|
||||
#[Route('/download/{id}', name: 'app_book_download', methods: ['GET'])]
|
||||
public function downloadBook(Book $book): BinaryFileResponse
|
||||
{
|
||||
return $this->file(
|
||||
$this->getParameter('book_files') . '/' . 'ebook_' . $book->getId() . '.' . pathinfo(
|
||||
$book->getOriginalFilename(),
|
||||
PATHINFO_EXTENSION
|
||||
),
|
||||
$book->getOriginalFilename()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
53
src/Controller/FileController.php
Normal file
53
src/Controller/FileController.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Entity\Book;
|
||||
use App\Entity\File;
|
||||
use App\Repository\FileRepository;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\Filesystem\Filesystem;
|
||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
|
||||
class FileController extends AbstractController
|
||||
{
|
||||
#[Route('/file', name: 'app_file')]
|
||||
public function index(): Response
|
||||
{
|
||||
return $this->render('file/index.html.twig', [
|
||||
'controller_name' => 'FileController',
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/file/delete/{id}', name: 'app_file_delete')]
|
||||
public function delete(
|
||||
Request $request,
|
||||
FileRepository $fileRepository,
|
||||
File $file,
|
||||
Filesystem $filesystem
|
||||
): Response {
|
||||
$filePath = $this->getParameter('book_files') . '/' . 'ebook_' . $file->getBook()->getId() . '_' .
|
||||
md5($file->getFileName()) . '.' .
|
||||
$file->getExtension();
|
||||
$filesystem->remove($filePath);
|
||||
|
||||
if (!$filesystem->exists($filePath)) {
|
||||
$fileRepository->remove($file, 'true');
|
||||
}
|
||||
return $this->redirect($request->headers->get('referer'));
|
||||
}
|
||||
|
||||
#[Route('/file/{id}', name: 'app_file_download', methods: ['GET'])]
|
||||
public function get(File $file)
|
||||
{
|
||||
return $this->file(
|
||||
$filePath = $this->getParameter('book_files') . '/' . 'ebook_' . $file->getBook()->getId() . '_' .
|
||||
md5($file->getFileName()) . '.' .
|
||||
$file->getExtension(),
|
||||
$file->getFileName()
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user