getClientOriginalName(), PATHINFO_FILENAME); $safeFilename = $this->slugger->slug($originalFilename); // Utilisation de uniqid('', true) pour garantir une unicité absolue en production $fileName = sprintf('%s-%s.%s', $safeFilename, uniqid('', true), $file->guessExtension()); try { $file->move($this->getTargetDirectory(), $fileName); } catch (FileException $e) { throw new RuntimeException('Erreur lors du transfert de l\'image : ' . $e->getMessage(), 0, $e); } return $fileName; } /** * Supprime physiquement un fichier du serveur. * * @param string|null $fileName Le nom du fichier à supprimer. */ public function delete(?string $fileName): void { if (null === $fileName) { return; } $filePath = rtrim($this->getTargetDirectory(), '/') . '/' . $fileName; if (file_exists($filePath)) { unlink($filePath); } } /** * Retourne le chemin du répertoire de dépôt. * * @return string */ public function getTargetDirectory(): string { return $this->targetDirectory; } }