Скачиваем файлы с роутера в Laravel

В Laravel можно очень просто реализовать загрузку файлов с сервера. Поэтому, в этом посте я покажу способ загрузки файлов-роутеров, но только для авторизованных пользователей…

Реализация загрузки файлов в Laravel

В начале, группа посредник для настройки промежуточной аутентификации:

Route::group(['middleware' => 'auth'], function () {

Далее создаем выделенный маршрут загрузки:

Route::get('download', function () {

Собираем запрос:

$path = request('f');

Определяем расширение файла:

$extension = pathinfo($path, PATHINFO_EXTENSION);

Определяем массив с расширениями файлов запрещенных к скачиванию:

$blocked = ['php', 'htaccess'];

Если расширение запрашиваемого файла отсутствует в  массиве выше, то скачиваем его через отклик загрузки файла:

if (! in_array($extension, $blocked)) {
    return response()->download($path);
}

Весь код:

//только авторизованный пользователь может скачать файл
Route::group(['middleware' => 'auth'], function () {
    
    //обращаемся к маршруту /download?f=path
    Route::get('download', function () {

        //получаем GET запрос
        $path = request('f');

        //смотрим на расширение запрашиваемого файла
        $extension = pathinfo($path, PATHINFO_EXTENSION);

        //создаем массив расширений файлов запрещенных к скачиванию
        $blocked = ['php', 'htaccess'];

        //если расширение запрашиваемого файла отсутствует в массиве выше
        if (! in_array($extension, $blocked)) {
            //скачиваем этот файл
            return response()->download($path);
        }
    });
});

Подписаться на новые статьи