murph-doc/docs/utils/file_handler.md

49 lines
1.4 KiB
Markdown
Raw Permalink Normal View History

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());
});
```