Загрузка файлов с помощью Laravel: URL, хранилище и потоковая передача

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

Метод 1: загрузка файла по URL-адресу
Вы можете использовать метод response()->download()для загрузки файла по заданному URL-адресу. Вот пример:

use Illuminate\Support\Facades\Response;
public function downloadFileFromUrl()
{
    $fileUrl = 'https://example.com/path/to/file.pdf';
    $fileName = 'file.pdf';
    return response()->download($fileUrl, $fileName);
}

Метод 2: загрузка файла из хранилища
Если файл, который вы хотите загрузить, хранится локально в каталоге хранилища приложения Laravel, вы можете использовать response()->download()метод с путем к файлу. Вот пример:

use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Response;
public function downloadFileFromStorage()
{
    $filePath = Storage::path('path/to/file.pdf');
    $fileName = 'file.pdf';
    return response()->download($filePath, $fileName);
}

Метод 3: потоковая передача файла для загрузки
Если вы хотите передать файл из приложения для загрузки в потоковом режиме, вы можете использовать метод response()->streamDownload(). Этот метод позволяет вам настроить заголовки ответов файла. Вот пример:

use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Storage;
public function streamDownloadFile()
{
    $filePath = Storage::path('path/to/file.pdf');
    $fileName = 'file.pdf';
    return response()->streamDownload(function () use ($filePath) {
        echo file_get_contents($filePath);
    }, $fileName);
}