Как взаимодействовать с файлами юзера?

В Laravel есть несколько способов взаимодействия с файлами пользователя. Ниже я расскажу о двух наиболее распространенных способах: загрузка файлов на сервер и работа с файлами на сервере.

1. Загрузка файлов на сервер:
Для загрузки файлов на сервер пользователей необходимо использовать класс UploadedFile, который предоставляется Laravel. Вам понадобится HTML-форма, которая будет содержать <input type="file">, и обработчик, который будет обрабатывать отправку формы. Ниже приведен пример работы с загруженным файлом:

public function uploadFile(Request $request)
{
    // Получаем загруженный файл
    $file = $request->file('file');
    
    // Проверяем, был ли файл успешно загружен
    if ($file->isValid()) {
        // Генерируем уникальное имя файла
        $fileName = uniqid().'.'.$file->extension();
        
        // Перемещаем файл в папку для загрузки
        $file->move('uploads', $fileName);
        
        // Возвращаем путь к сохраненному файлу
        return 'File uploaded successfully: ' . '/uploads/' . $fileName;
    }
    
    // Если файл не был успешно загружен, выводим ошибку
    return 'Error uploading file';
}

2. Работа с файлами на сервере:
Laravel предоставляет мощные инструменты для работы с файловой системой на сервере. Он поддерживает различные драйверы файловой системы, такие как local, s3, ftp и другие.

Для работы с файлами на сервере вы можете использовать класс IlluminateSupportFacadesStorage, который предоставляет удобные методы для чтения, записи, копирования и удаления файлов. Ниже приведен пример чтения и записи файла:

use IlluminateSupportFacadesStorage;

public function readAndWriteFile()
{
    // Записываем данные в файл
    Storage::put('file.txt', 'Hello, World!');
    
    // Читаем данные из файла
    $contents = Storage::get('file.txt');
    
    return $contents;
}

Вы также можете скопировать и удалить файлы с помощью методов copy и delete:

use IlluminateSupportFacadesStorage;

public function copyAndDeleteFile()
{
    // Копируем файл в другое место
    Storage::copy('file.txt', 'new-file.txt');
    
    // Удаляем файл
    Storage::delete('file.txt');
    
    return 'File copied and deleted successfully';
}

Таким образом, использование классов UploadedFile и Storage позволяет вам эффективно взаимодействовать с файлами пользователей в Laravel, независимо от того, загружаете ли вы файлы на сервер или работаете с файлами на сервере.