Метод getClientOriginalPath
Метод getClientOriginalPath класса UploadedFile возвращает путь к файлу на стороне клиента, который был загружен на сервер. Этот путь приходит из браузера пользователя и не всегда является полным путём к файлу в файловой системе. Метод не принимает параметров и возвращает строку или null, если путь не был передан.
Важно понимать, что значение, возвращаемое методом, нельзя использовать для доступа к файлу на сервере. Оно отражает только ту информацию, которую предоставил браузер, и может быть подделано. Для получения реального пути к загруженному файлу используйте метод getRealPath.
Синтаксис
public function getClientOriginalPath(): ?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');
}
$path = $file->getClientOriginalPath();
return new Response($path ?? 'Path not provided');
}
}
?>
Результат выполнения кода при загрузке файла с полным путём /home/user/documents/article.txt:
"/home/user/documents/article.txt"
Пример
Давайте сравним оригинальный путь с именем файла, которое также передаёт клиент:
<?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/info', name: 'upload_info')]
public function info(Request $request): Response
{
$file = $request->files->get('document');
if ($file === null) {
return new Response('No file uploaded');
}
$res = [
'clientPath' => $file->getClientOriginalPath(),
'clientName' => $file->getClientOriginalName(),
'realPath' => $file->getRealPath(),
];
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"clientPath":"/home/user/documents/article.txt","clientName":"article.txt","realPath":"/tmp/php12ab34"}
Смотрите также
-
класс
UploadedFile,
который представляет загруженный файл -
метод
getClientOriginalName,
который возвращает оригинальное имя файла -
метод
getRealPath,
который возвращает реальный путь к файлу на сервере -
метод
move,
который перемещает загруженный файл в нужную директорию