Метод getClientOriginalExtension класса UploadedFile
Метод getClientOriginalExtension класса
UploadedFile возвращает расширение файла,
которое было передано клиентом при загрузке.
Метод не принимает параметров и возвращает строку
с расширением без ведущей точки. Например, если
пользователь загрузил файл 'document.pdf',
метод вернёт 'pdf'.
Важно понимать, что это расширение берётся из имени файла, отправленного браузером, а не определяется по содержимому файла. Поэтому использовать его для проверки безопасности следует с осторожностью.
Синтаксис
$uploadedFile->getClientOriginalExtension(): string
Пример
Давайте создадим контроллер, который принимает загруженный файл и выводит его оригинальное расширение:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class UploadController extends AbstractController
{
#[Route('/upload', name: 'upload_file')]
public function upload(Request $request): Response
{
$file = $request->files->get('document');
if ($file === null) {
return new Response('No file uploaded');
}
$extension = $file->getClientOriginalExtension();
return new Response($extension);
}
}
?>
Результат выполнения кода для файла
'document.pdf':
"pdf"
Пример
Давайте проверим расширение файла перед сохранением и разрешим только изображения:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class UploadController extends AbstractController
{
#[Route('/upload/image', name: 'upload_image')]
public function uploadImage(Request $request): Response
{
$file = $request->files->get('image');
if ($file === null) {
return new Response('No file uploaded');
}
$extension = $file->getClientOriginalExtension();
$allowed = ['jpg', 'jpeg', 'png', 'gif'];
if (!in_array($extension, $allowed)) {
return new Response('Invalid file type');
}
$file->move('uploads', 'image.' . $extension);
return new Response('Uploaded: ' . $extension);
}
}
?>
Результат выполнения кода для файла
'photo.png':
"Uploaded: png"
Смотрите также
-
метод
getClientOriginalName,
который возвращает оригинальное имя файла -
метод
getClientMimeType,
который возвращает MIME-тип файла от клиента -
метод
guessExtension,
который определяет расширение по содержимому файла -
метод
move,
который перемещает загруженный файл в нужную директорию