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 жрет память (чтобы прочитать "в себя" файл целиком)