Метод getRealPath
Метод getRealPath класса UploadedFile
возвращает абсолютный путь к загруженному
файлу во временной директории сервера. Метод
не принимает параметров и возвращает строку
с путём либо false, если файл не существует.
Путь указывает на временную копию файла,
созданную PHP при загрузке, а не на исходное
расположение на компьютере пользователя.
Метод наследуется от класса File и работает
с временным файлом, который PHP помещает
в директорию upload_tmp_dir. После завершения
запроса временный файл удаляется автоматически.
Синтаксис
public function getRealPath(): string|false
Пример
Давайте выведем абсолютный путь к загруженному файлу в контроллере:
<?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');
$res = $file->getRealPath();
return new Response($res);
}
}
?>
Результат выполнения кода:
"/tmp/php12A3B4"
Пример
Давайте проверим существование временного файла через функцию file_exists:
<?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/check', name: 'upload_check')]
public function check(Request $request): Response
{
$file = $request->files->get('document');
$res = $file->getRealPath();
if ($res !== false && file_exists($res)) {
return new Response('file exists: ' . $res);
}
return new Response('file not found');
}
}
?>
Результат выполнения кода:
"file exists: /tmp/php12A3B4"
Пример
Давайте прочитаем содержимое загруженного файла по абсолютному пути:
<?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/read', name: 'upload_read')]
public function read(Request $request): Response
{
$file = $request->files->get('document');
$path = $file->getRealPath();
$res = file_get_contents($path);
return new Response($res);
}
}
?>
Результат выполнения кода:
"hello"
Смотрите также
-
класс
UploadedFile,
который представляет загруженный файл -
метод
move,
который перемещает загруженный файл -
метод
getPathname,
который возвращает путь к файлу -
метод
isFile,
который проверяет, является ли путь файлом