bookFiles = $bookFiles; $this->fileSystem = $filesystem; $this->fileRepository = $fileRepository; } /** * @param Collection|File $files * @return void */ public function removeFiles(Collection|File $files) { if (!$files instanceof Collection) { $files = new ArrayCollection([$files]); } foreach ($files as $file) { $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; } }