Скачивание файла в Livewire
Пусть отчёт по посту уже лежит в хранилище на сервере, а со страницы его не забрать. Прямая ссылка на закрытую папку в браузере не откроется, и человек остаётся без файла.
Кнопку можно связать с методом
компонента, который вернёт
ответ с методом download:
тогда файл уйдёт в браузер
как скачивание.
Путь к файлу на диске собирают
через функцию storage_path.
Давайте создадим компонент
PostReport:
php artisan make:livewire PostReport --class
Давайте добавим маршрут и страницу:
<?php
Route::get('/posts/report', function () {
return view('posts-report');
});
?>
<x-layout>
<livewire:post-report />
</x-layout>
Давайте добавим метод
export, который отдаст
файл:
<?php
namespace App\Livewire;
use Livewire\Component;
class PostReport extends Component
{
public function export()
{
return response()->download(
storage_path(
'app/reports/report.txt'
)
);
}
public function render()
{
return view(
'livewire.post-report'
);
}
}
?>
Давайте в шаблоне добавим кнопку скачивания:
<div>
<button
type="button"
wire:click="export"
>
Download
</button>
</div>
Создайте компонент EmployeeReport.
Кнопка отдаёт браузеру файл
работника, который уже лежит
в хранилище.