2022-05-07 13:47:17 +02:00
|
|
|
# File upload handler
|
|
|
|
|
|
|
|
`App\Core\Form\FileUploadHandler` is a service and helps you to upload a file. See example below.
|
|
|
|
|
2023-02-09 21:50:06 +01:00
|
|
|
```php-inline
|
2022-05-07 13:47:17 +02:00
|
|
|
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(
|
2023-07-29 13:37:08 +02:00
|
|
|
uploadedFile: $form->get('image')->getData(), // Symfony\Component\HttpFoundation\File\UploadedFile or null
|
|
|
|
path: $fileDirectory,
|
2022-05-07 13:47:17 +02:00
|
|
|
// optional
|
2023-07-29 13:37:08 +02:00
|
|
|
afterUploadCallback: function ($filename) use ($entity, $fileDirectory) {
|
2022-05-07 13:47:17 +02:00
|
|
|
$entity->setImage($fileDirectory.$filename);
|
|
|
|
},
|
|
|
|
// optional
|
2023-07-29 13:37:08 +02:00
|
|
|
keepOriginalFilename: $keepOriginalFilename
|
2022-05-07 13:47:17 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
// ...
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
2023-07-29 13:37:08 +02:00
|
|
|
|
|
|
|
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());
|
|
|
|
});
|
|
|
|
```
|