Laravel 7 - загрузка файла не начинается

Хотите, чтобы пользователь мог загрузить файл из среды Laravel, следуя инструкциям с сайта Laravel. .

Проблема: всплывающее окно для загрузки файла не отображается.

Устранение неполадок:

  1. Права устанавливаются соответственно.

    sudo chown -R www-data:www-data storage
    
    sudo chmod -R 775 storage
    
  2. Проверено как с Firefox, так и с Chrome.

  3. Запустил приложение Laravel, чтобы принудительно использовать новый порт.

    php artisan serve &
    
  4. Файл существует, и я не получаю никаких ошибок. Эхо-текст виден после нажатия триггера, но это гарантирует, что поток (роут-›форма-›контроллер) работает.

  5. Я создал подключение к хранилищу ссылок, описанное здесь:

php artisan storage:link

Наблюдения:

У меня загрузка работает. У меня был метод run в трейте, который запускал остальные методы трейта. Если установить маршрут непосредственно к методу загрузки, похоже, он работает. Не уверен, почему возникает проблема с вызовом метода запуска из маршрута.


[Мой контроллер]

  public function downloadFile()
  {

  echo "string";

     
    $filename = 'file.png';
    
    // Test-1    

    return response()->download(
      storage_path(
        '/app/public/'. $filename
      )
    );

    // Test-2

    // return response()->download(
    //  public_path(
    //    'storage/' . $filename
    //  )
    // );

  }

person Toolbox    schedule 12.08.2020    source источник
comment
Почему ваш контроллер возвращает два ответа? Это не сработает   -  person Nico Haase    schedule 12.08.2020
comment
@NicoHaase Обновил вопрос. Только что они оба тестировали варианты путей хранения (общедоступные и хранилища).   -  person Toolbox    schedule 12.08.2020
comment
Какой ответ вы видите в своих инструментах разработки? Заголовки и т. д. могут быть интересными. Хотя я думаю, что вам, вероятно, следует удалить эхо, так как это может помешать загрузке   -  person Fabian Bettag    schedule 12.08.2020
comment
Сначала вы должны проверить права доступа к каталогу на сервере.   -  person hammad khan    schedule 12.08.2020
comment
@FabianBettag Насколько я понимаю, версия Laravel, которую я использую, не требует определения заголовков.   -  person Toolbox    schedule 12.08.2020
comment
Попробуйте storage_path('app/public/'.$filename) (без / перед app)   -  person Lyzvaleska    schedule 12.08.2020
comment
@hammadkhan Обновлен вопрос с информацией о настройках разрешений.   -  person Toolbox    schedule 12.08.2020
comment
@Lyzvaleska Пытался удалить первую косую черту, проблема не устранена.   -  person Toolbox    schedule 12.08.2020
comment
При загрузке файла всегда устанавливаются определенные заголовки для начала загрузки. Я ищу эти заголовки ответа   -  person Fabian Bettag    schedule 12.08.2020
comment
Вы не можете повторить что-то И скачать файл. Ответ на загрузку должен будет установить заголовки загрузки, но поскольку вы уже отправили тело в виде echo, это не удастся.   -  person apokryfos    schedule 12.08.2020
comment
@apokryfos Удалено эхо и любые другие методы в классе. Проблема сохраняется. Единственное, что решило проблему, - это напрямую настроить маршрутизатор на определенный метод вместо вызова метода запуска.   -  person Toolbox    schedule 12.08.2020


Ответы (1)


Попробуйте вызвать downloadFile() без ajax, если вы его используете.

person Petyor    schedule 12.08.2020
comment
Не используйте Аякс. - person Toolbox; 12.08.2020