October 1, 2021
Laravel: Загрузка файла с проверкой прав доступа на файл
Если у нас какая-нибудь админка и надо дать возможность скачать файл с проверкой прав доступа на файл, то можно сделать так, как я тут описываю.
Если вы знаете способ лучше сделать тоже самое - пишите в комментарии, буду признателен.
Итак. Делаем маршрут для загрузки, в контроллере/обработчике сначала добавляем Illuminate\Http\Response в начало файла
use Illuminate\Http\Response;
public function download($fileId) { /** Получаем контект файла (через Storage::get() или через file_get_contents) в переменную $fileContent, имя файла, с которым он должен скачаться - $filename */ return (new Response($fileContent, 200)) ->header('Content-Disposition', 'attachment;filename="'. $filename . '"' ); }
Очевидный минус - при загрузке файла php жрет память (чтобы прочитать "в себя" файл целиком)