Я хочу проверить расширение файла на Symfony3 перед загрузкой файла. До сих пор я использую этот код (это упрощенная версия, просто используемая в качестве фрагмента):
if ($form->isSubmitted() && $form->isValid()) {
$form->handleRequest($request);
$file = $form->get('file')->getData();
$ext = $file->guessExtension();
if($ext !== 'myextension' ){
die('not allowed');
}
$name = md5($file->getClientOriginalName().time());
$full_name = $name.'.'.$ext;
$dir = __DIR__.'/../../../web/upload';
$file->move($dir,$full_name);
}
Вопрос: файл все равно будет загружен во временную директорию? это безопасно? есть ли лучший способ сделать это? Больше всего меня беспокоит, что кто-то пытается загрузить бинарный файл или скрипт. Спасибо
РЕДАКТИРОВАТЬ (спасибо Габриэлю Диезу): файл является собственностью объекта. Я использовал assert, чтобы объявить это:
/**
* @Assert\File(maxSize="20M")
*/
private $file;