Laravel - 有没有办法返回视图和下载?

时间:2016-07-29 19:45:25

标签: php laravel

我试图找出一种方法,我可以返回一个视图,但也调用下载功能。像这样:

return view('home')->download($filename, 'text.csv', $headers);

2 个答案:

答案 0 :(得分:2)

我不认为这是可能的。 Laravel必须选择要发送到您的浏览器的内容。如果它发送重定向标题,您将看不到该页面。

唯一的解决方案是渲染视图并在视图中放置一个简单的javascript:

window.location.href = "<your file url>"

如果这是一个文件,它应该在不更改页面的情况下开始下载。

答案 1 :(得分:0)

目前,有一种方法可以使用流下载来实现。它不漂亮,但是可以用。请注意,该函数必须为echo而不是return,因此为什么要在视图上调用render()

return response()->streamDownload(function() {
        echo view('home')->render();
    }
    , 'test.csv'
    , ['Content-Type' => 'text/csv']
);