murph-doc/docs/utils/file_handler.md
Simon Vieille f2ba285349
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
add doc about filterHandler
2023-07-29 13:37:08 +02:00

49 lines
1.4 KiB
Markdown

# File upload handler
`App\Core\Form\FileUploadHandler` is a service and helps you to upload a file. See example below.
```php-inline
use App\Core\Form\FileUploadHandler;
use App\Entity\Foo;
use App\Form\FooType;
use Symfony\Component\HttpFoundation\Request;
public function upload(Request $request, FileUploadHandler $fileUpload)
{
$entity = new Foo();
$form = $this->createForm(FooType::class, $foo);
if ($request->isMethod('POST')) {
$form->handleRequest($request);
if ($form->isValid()) {
$fileDirectory = 'uploads/';
$keepOriginalFilename = false;
$fileUpload->handleForm(
uploadedFile: $form->get('image')->getData(), // Symfony\Component\HttpFoundation\File\UploadedFile or null
path: $fileDirectory,
// optional
afterUploadCallback: function ($filename) use ($entity, $fileDirectory) {
$entity->setImage($fileDirectory.$filename);
},
// optional
keepOriginalFilename: $keepOriginalFilename
);
// ...
}
}
}
```
If you need to generate custom filenames, `FileUploadHandler` allows you to define a generator:
```
use Symfony\Component\HttpFoundation\File\UploadedFile;
$fileUpload->setFilenameGenerator(function(UploadedFile $file) {
return sprintf('%d.%s', mt_rand(), $file->guessExtension());
});
```