Vue event bus, uploading files handles from file service.
This commit is contained in:
@@ -2,35 +2,68 @@
|
||||
|
||||
namespace App\Service;
|
||||
|
||||
use App\Entity\Book;
|
||||
use App\Entity\File;
|
||||
use App\Repository\FileRepository;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use Symfony\Component\Filesystem\Filesystem;
|
||||
use Symfony\Component\HttpFoundation\File\UploadedFile;
|
||||
|
||||
class FileService
|
||||
{
|
||||
private Filesystem $fileSystem;
|
||||
private string $bookFiles;
|
||||
private FileRepository $fileRepository;
|
||||
|
||||
public function __construct(string $bookFiles, FileSystem $filesystem)
|
||||
public function __construct(string $bookFiles, FileSystem $filesystem, FileRepository $fileRepository,)
|
||||
{
|
||||
$this->bookFiles = $bookFiles;
|
||||
$this->fileSystem = $filesystem;
|
||||
$this->fileRepository = $fileRepository;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param File[] $files
|
||||
* @param Collection $files
|
||||
* @return void
|
||||
*/
|
||||
public function removeFiles(Collection $files)
|
||||
{
|
||||
foreach ($files as $file) {
|
||||
$filePath = $this->bookFiles . '/' . 'ebook_' . $file->getBook()->getId() . '_' .
|
||||
md5($file->getFileName()) . '.' .
|
||||
$file->getExtension();
|
||||
|
||||
$this->fileSystem->remove($filePath);
|
||||
$this->fileSystem->remove($this->getFilePath($file));
|
||||
}
|
||||
}
|
||||
|
||||
public function getFilePath(File $file): string
|
||||
{
|
||||
return $this->bookFiles . DIRECTORY_SEPARATOR . $this->getFileName($file);
|
||||
}
|
||||
|
||||
public function getFileName(File $file): string
|
||||
{
|
||||
return 'ebook_' . $file->getBook()->getId() . '_' .
|
||||
md5($file->getFileName()) . '.' .
|
||||
$file->getExtension();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param UploadedFile $ebook
|
||||
* @param Book $book
|
||||
* @return File
|
||||
*/
|
||||
public function saveFile(UploadedFile $ebook, Book $book): File
|
||||
{
|
||||
$file = new File();
|
||||
$file->setFileName(trim($ebook->getClientOriginalName()));
|
||||
$file->setFileSize($ebook->getSize());
|
||||
$file->setExtension($ebook->guessClientExtension());
|
||||
$file->setBook($book);
|
||||
$this->fileRepository->add($file, true);
|
||||
|
||||
$ebook->move(
|
||||
$this->bookFiles,
|
||||
$this->getFileName($file)
|
||||
);
|
||||
return $file;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user