Как загружать файлы в symfony 4 без формы?

В Symfony 4 можно загружать файлы без использования формы, используя классы UploadedFile и Filesystem.

Первым шагом необходимо создать экземпляр класса UploadedFile для каждого загружаемого файла. Этот класс предоставляет удобный способ работы с файлами и содержит информацию о файле, включая его имя, тип, размер и временное местоположение.

Пример создания экземпляра UploadedFile:

use SymfonyComponentHttpFoundationFileUploadedFile;

$file = new UploadedFile(
    'path/to/file', // путь к файлу на сервере
    'original_filename.jpg', // оригинальное имя файла
    'image/jpeg', // MIME-тип файла
    123456, // размер файла в байтах
    null, // ошибка при загрузке файла (если есть)
    true // удалить временный файл после загрузки
);

Затем вы можете использовать класс Filesystem для сохранения или перемещения файла в нужное место:

use SymfonyComponentFilesystemFilesystem;

$filesystem = new Filesystem();
$newFilePath = 'path/to/destination/filename.jpg'; // путь и новое имя сохраняемого файла

$filesystem->rename($file->getPathname(), $newFilePath);

Также, если вы хотите проверить допустимые типы файлов, вы можете использовать класс MimeTypeGuesser:

use SymfonyComponentHttpFoundationFileMimeTypeMimeTypeGuesser;

$guesser = MimeTypeGuesser::getInstance();
$mimeType = $guesser->guess($newFilePath);

Обратите внимание, что вам нужно установить соответствующий пакет Symfony для работы с файлами. Вы можете добавить его в свой файл composer.json и запустить composer install:

{
    "require": {
        "symfony/filesystem": "^4.0"
    }
}

Это лишь базовый пример загрузки файлов без использования формы в Symfony 4. В реальном проекте вы можете использовать дополнительные проверки и валидацию, а также настраивать пути загрузки и другие параметры согласно вашим потребностям.