我试图找出一种方法,我可以返回一个视图,但也调用下载功能。像这样:
return view('home')->download($filename, 'text.csv', $headers);
答案 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']
);