add filename generator setter in FileUploadHandler

This commit is contained in:
Simon Vieille 2023-05-27 15:48:58 +02:00
parent 895d5065ca
commit 8667188675
Signed by: deblan
GPG key ID: 579388D585F70417

View file

@ -11,6 +11,15 @@ use Symfony\Component\HttpFoundation\File\UploadedFile;
*/ */
class FileUploadHandler class FileUploadHandler
{ {
protected $filenameGenerator;
public function setFilenameGenerator(callable $filenameGenerator): self
{
$this->filenameGenerator = $filenameGenerator;
return $this;
}
public function handleForm(?UploadedFile $uploadedFile, string $path, ?callable $afterUploadCallback = null, bool $keepOriginalFilename = false): void public function handleForm(?UploadedFile $uploadedFile, string $path, ?callable $afterUploadCallback = null, bool $keepOriginalFilename = false): void
{ {
if (null === $uploadedFile) { if (null === $uploadedFile) {
@ -21,9 +30,11 @@ class FileUploadHandler
if ($keepOriginalFilename) { if ($keepOriginalFilename) {
$filename = $originalFilename.'.'.$uploadedFile->guessExtension(); $filename = $originalFilename.'.'.$uploadedFile->guessExtension();
} else { } elseif (!is_callable($this->filenameGenerator)) {
$safeFilename = transliterator_transliterate('Any-Latin; Latin-ASCII; [^A-Za-z0-9_] remove; Lower()', $originalFilename); $safeFilename = transliterator_transliterate('Any-Latin; Latin-ASCII; [^A-Za-z0-9_] remove; Lower()', $originalFilename);
$filename = date('Ymd-his').$safeFilename.'.'.$uploadedFile->guessExtension(); $filename = date('Ymd-his').$safeFilename.'.'.$uploadedFile->guessExtension();
} else {
$filename = call_user_func($this->filenameGenerator, $uploadedFile);
} }
$uploadedFile->move($path, $filename); $uploadedFile->move($path, $filename);