Php Laravel5.2流下载

Php Laravel5.2流下载,php,download,laravel-5.2,Php,Download,Laravel 5.2,我对CSV下载有点糊涂了。我很高兴将它保存到一个文件中,并向用户提供一个链接,但从情况来看,这似乎是错误的做法 从这个答案开始,我想我已经发现stream()方法不再存在 public function download() { $headers = [ 'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0' , 'Content-type'

我对CSV下载有点糊涂了。我很高兴将它保存到一个文件中,并向用户提供一个链接,但从情况来看,这似乎是错误的做法

从这个答案开始,我想我已经发现
stream()
方法不再存在

public function download()
{
    $headers = [
            'Cache-Control'       => 'must-revalidate, post-check=0, pre-check=0'
        ,   'Content-type'        => 'text/csv'
        ,   'Content-Disposition' => 'attachment; filename=galleries.csv'
        ,   'Expires'             => '0'
        ,   'Pragma'              => 'public'
    ];

    $list = $this->users->getAllUsers()->toArray();

    # add headers for each column in the CSV download
    array_unshift($list, array_keys($list[0]));

   $callback = function() use ($list) 
    {
        $FH = fopen('php://output', 'w');
        foreach ($list as $row) { 
            fputcsv($FH, $row);
        }
        fclose($FH);
    };

    // return Response::stream($callback, 200, $headers); // Old version
    return response()->download($callback, 'Users-' . date('d-m-Y'), $headers);

}
我曾尝试使用Laravel 5.2
response()
函数,但我对响应的内容有点迷茫–
download()
似乎是合乎逻辑的选择,但这给了我以下错误:

类闭包的对象无法转换为字符串


这是有道理的。正确的做法是什么?或者我应该保存文件,然后只使用filepath作为我的
download()
函数的第一个参数——这似乎是一个不好的做法?

当我用助手函数
Response()->
替换了类和静态调用
Response::
,它就足够简单并且工作得很好了:

return response()->stream($callback, 200, $headers);
我相信这使用了
streamdresponse