Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Laravel 5.x » response()->download() возвращает пустоту » 16.04.2020 11:39:58

coffee_owl
Ответов: 1

Доброе утро!

При создании контролируемого скачивания файла столкнулась с проблемой, что response()->download() возвращает пустоту.

Логика была такая. Пользователь нажимает на ссылку и отправляется ajax запрос на контроллер file. Там происходит проверка на авторизацию пользователя и есть ли такой файл. Если все проверки пройдены, то вызывается приватная функция на скачивание файла, а в ответ на ajax  запрос уходит json с информацией, то все успешно. Мне не понятно почему возвращается пустота.

public function download( Request $request ){

    $file_symbol = $request->route('file_symbol');
    if( Auth::user() ){
      // Получение реального пути до файла
      $file_model = new File;
      $real_path = $file_model->getRealPath( $file_symbol );
      $filexist = Storage::disk('local')->exists( $real_path );
      if( $filexist ){
        $this->permittedOperation( 'download', $real_path );
        return response()->json(array('success' => true, 'message' => 'Success. Download started.'));
      } else {
        return response()->json(array('success' => false, 'message' => 'Error. File not found.'));
      }
    } else {
      return response()->json(array('success' => false, 'message' => 'Error. No access.'));
    }
}

Приватная функция.

private function permittedOperation( $operation_type, $real_path ){
    switch ($operation_type) {
      case 'download':
          return response()->download( storage_path('app'.$real_path) );
        break;
    }

Буду рада помощи!:)

Подвал раздела