Метод file
Метод file класса Response применяется для отправки файлов клиенту. Первым параметром передаётся путь к файлу на сервере, вторым - имя файла, которое будет отображаться у пользователя. Третьим параметром можно передать массив заголовков. Если второй параметр не указан, используется имя файла из пути.
Синтаксис
<?php
use Illuminate\Support\Facades\Response;
Response::file($path, $name, $headers);
?>
Пример
Давайте отправим файл с простым текстом:
<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Response;
Route::get('/file', function () {
$path = storage_path('app/files/example.txt');
return Response::file($path);
});
?>
После перехода по маршруту /file браузер предложит скачать файл или отобразит его содержимое в зависимости от типа.
Пример
Давайте отправим файл с указанием имени для сохранения:
<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Response;
Route::get('/file', function () {
$path = storage_path('app/files/example.txt');
return Response::file($path, 'document.txt');
});
?>
При скачивании файл будет сохранён как 'document.txt'.
Пример
Давайте отправим файл с дополнительными заголовками:
<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Response;
Route::get('/file', function () {
$path = storage_path('app/files/image.jpg');
$headers = [
'Content-Type' => 'image/jpeg',
'Cache-Control' => 'public, max-age=3600'
];
return Response::file($path, 'photo.jpg', $headers);
});
?>
Заголовки позволяют управлять кэшированием и типом контента для корректного отображения в браузере.
Пример
Давайте используем метод file в контроллере:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Response;
class FileController extends Controller
{
public function download()
{
$path = storage_path('app/files/report.pdf');
return Response::file($path, 'report.pdf');
}
}
?>
<?php
use App\Http\Controllers\FileController;
Route::get('/download', [FileController::class, 'download']);
?>
При переходе по маршруту /download будет скачан PDF-файл.