Метод getErrorMessage
Метод getErrorMessage принадлежит классу UploadedFile
и возвращает человекочитаемое сообщение об ошибке,
которая возникла во время загрузки файла на сервер.
Если загрузка прошла без ошибок, метод возвращает null.
Метод не принимает параметров.
Внутри метод опирается на код ошибки, который хранится
в объекте и доступен через метод getError.
Код ошибки соответствует константам UPLOAD_ERR_*,
определённым в PHP. Метод переводит этот код в текстовое
описание, например 'The file "article" was not uploaded due to an unknown error.'.
Синтаксис
public function getErrorMessage(): ?string
Пример
Давайте создадим объект UploadedFile с кодом ошибки
и выведем сообщение через getErrorMessage:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class FileController extends AbstractController
{
#[Route('/file/error', name: 'file_error')]
public function error(): Response
{
$file = new UploadedFile(
'/tmp/php1234',
'article',
null,
UPLOAD_ERR_CANT_WRITE,
true
);
$res = $file->getErrorMessage();
return new Response($res);
}
}
?>
Результат выполнения кода:
The file "article" was not uploaded due to an unknown error.
Пример
Давайте проверим случай, когда загрузка прошла успешно
и код ошибки равен UPLOAD_ERR_OK:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class FileController extends AbstractController
{
#[Route('/file/ok', name: 'file_ok')]
public function ok(): Response
{
$file = new UploadedFile(
'/tmp/php5678',
'hello',
null,
UPLOAD_ERR_OK,
true
);
$res = $file->getErrorMessage();
if ($res === null) {
$res = 'no error';
}
return new Response($res);
}
}
?>
Результат выполнения кода:
no error
Пример
Давайте выведем сообщение об ошибке для превышения максимального размера файла:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class FileController extends AbstractController
{
#[Route('/file/size', name: 'file_size')]
public function size(): Response
{
$file = new UploadedFile(
'/tmp/php9012',
'abcde',
null,
UPLOAD_ERR_INI_SIZE,
true
);
$res = $file->getErrorMessage();
return new Response($res);
}
}
?>
Результат выполнения кода:
The file "abcde" exceeds your upload_max_filesize ini directive.
Смотрите также
-
класс
UploadedFile,
который представляет загруженный файл -
метод
getError,
который возвращает код ошибки загрузки -
метод
isValid,
который проверяет, прошла ли загрузка без ошибок -
метод
move,
который перемещает загруженный файл в нужную папку