Класс File
Класс File является обёрткой над нативными функциями PHP для работы с файловой системой. Он позволяет получать информацию о файле, проверять его свойства и выполнять различные операции. Объект класса создаётся путём передачи пути к файлу в конструктор.
Синтаксис
<?php
use Symfony\Component\HttpFoundation\File\File;
$file = new File(string $path, bool $checkPath = true);
?>
Пример
Давайте создадим объект File и получим имя файла:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\HttpFoundation\File\File;
class FileController extends AbstractController
{
#[Route('/file', name: 'file_index')]
public function index(): Response
{
$file = new File('/var/www/html/article.txt');
return new Response($file->getFilename());
}
}
?>
Результат выполнения кода:
"article.txt"
Пример
Давайте проверим, является ли объект файлом, и получим его размер:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\HttpFoundation\File\File;
class FileController extends AbstractController
{
#[Route('/file-info', name: 'file_info')]
public function info(): Response
{
$file = new File('/var/www/html/article.txt');
if ($file->isFile()) {
return new Response('Size: ' . $file->getSize());
}
return new Response('Not a file');
}
}
?>
Результат выполнения кода:
"Size: 1024"
Пример
Давайте переместим файл в другую директорию:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\HttpFoundation\File\File;
class FileController extends AbstractController
{
#[Route('/file-move', name: 'file_move')]
public function move(): Response
{
$file = new File('/var/www/html/article.txt');
$movedFile = $file->move('/var/www/html/uploads');
return new Response($movedFile->getPathname());
}
}
?>
Результат выполнения кода:
"/var/www/html/uploads/article.txt"
Смотрите также
-
метод
getMimeType,
который возвращает MIME-тип файла -
метод
guessExtension,
который угадывает расширение файла -
метод
move,
который перемещает файл в другую директорию -
класс
UploadedFile,
который представляет загруженный файл