return response () -> download ();показать пустую страницу - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть этот код

return response()->download(storage_path('app/files/gggusers.xlsx'));

в моем контроллере.Он выполняется без каких-либо проблем, но вместо запуска браузера загружает файл Excel, он просто отображает пустую белую страницу.Я уверен, что имя и местоположение файла правильные, потому что если я просто изменю имя файла gggusers.xlsx на другое или удаляю файл, Laravel отобразит эту ошибку

The file "D:\web\speak\storage\app/files/gggusers.xlsx" does not exist.

Ответы [ 2 ]

0 голосов
/ 27 августа 2019

Я знаю, что это старый вопрос, но у меня была такая же проблема, и я решил ее.Ваша проблема в том, что вы возвращаете ответ (файл) из download() вызывающей функции, index(), но вы не возвращаете ничего из index() обратно на вкладку браузера, следовательно, на пустую страницу.

public function download(){
        return response()->download(storage_path('app/files/gggusers.xlsx'));
}

Здесь вы возвращаете загружаемый файл в функцию index(), но в функции index() вы ничего не возвращаете в браузер.Итак, изменив это:

public function index(){
        $this->download();
}

На это:

public function index(){
        return $this->download();
}

вернет файл на вкладку браузера, как и следовало ожидать.

Этоправильный способ сделать это.

0 голосов
/ 01 марта 2019

Оказывается, проблема возникает, потому что я помещаю

return response()->download(storage_path('app/files/gggusers.xlsx'));

в другую функцию и вызываю ее из функции, которая загружается внутри маршрута, что-то вроде этого:

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function index(){
        $this->download();
    }

    public function download(){
        return response()->download(storage_path('app/files/gggusers.xlsx'));
    }
}

Код выше будет отображать пустую страницу.Нет ошибокФункция загрузки вызывается без проблем, но каким-то образом после этого она просто отображает пустую страницу.

Если я просто введу код

return response()->download(storage_path('app/files/gggusers.xlsx'));

внутри function index(), файл будетскачал.

Очень признателен, если кто-то может объяснить мне, почему.Это какая-то ошибка или как-то предполагаемое поведение PHP / Laravel.Из-за этой проблемы потрачено несколько часов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...