Метод getError
Метод getError класса UploadedFile возвращает
целое число - код ошибки, которая возникла при загрузке
файла через HTML-форму. Если загрузка прошла успешно,
метод вернёт UPLOAD_ERR_OK, что равно нулю.
Параметров метод не принимает.
Коды ошибок соответствуют константам PHP:
UPLOAD_ERR_OK (0) - ошибок нет,
UPLOAD_ERR_INI_SIZE (1) - файл превышает
директиву upload_max_filesize,
UPLOAD_ERR_FORM_SIZE (2) - файл превышает
директиву MAX_FILE_SIZE формы,
UPLOAD_ERR_PARTIAL (3) - файл загружен частично,
UPLOAD_ERR_NO_FILE (4) - файл не был загружен,
UPLOAD_ERR_NO_TMP_DIR (6) - нет временной папки,
UPLOAD_ERR_CANT_WRITE (7) - не удалось записать файл на диск,
UPLOAD_ERR_EXTENSION (8) - загрузка остановлена расширением PHP.
Синтаксис
public function getError(): int
Пример
Давайте получим код ошибки загруженного файла в контроллере:
<?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');
$error = $file->getError();
return new Response((string) $error);
}
}
?>
Результат выполнения кода при успешной загрузке:
"0"
Пример
Давайте проверим, была ли ошибка при загрузке, и выведем сообщение:
<?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->getError() !== UPLOAD_ERR_OK) {
return new Response('upload failed');
}
return new Response('upload success');
}
}
?>
Результат выполнения кода при отсутствии ошибок:
"upload success"
Пример
Давайте выведем читаемое сообщение об ошибке с помощью метода getErrorMessage:
<?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->getError() === UPLOAD_ERR_INI_SIZE) {
return new Response('file is too large');
}
if ($file->getError() === UPLOAD_ERR_NO_FILE) {
return new Response('no file uploaded');
}
return new Response('file accepted');
}
}
?>
Результат выполнения кода при слишком большом файле:
"file is too large"
Смотрите также
-
класс
UploadedFile,
который представляет загруженный через форму файл -
метод
getErrorMessage,
который возвращает текст ошибки загрузки -
метод
isValid,
который проверяет, была ли загрузка успешной -
метод
getClientOriginalName,
который возвращает исходное имя загруженного файла