未找到StreamedResponse文件错误

时间:2017-01-11 07:30:19

标签: php laravel

您好我尝试使用laravel StreamedResponse块方法将大表(100 000行导出到CSV文件中)。如果下面粘贴的代码不能正常工作并显示以下错误。

enter image description here

  

找不到文件Firefox无法找到该文件   http://laravel/allExport2。检查文件名是否大写或   其他打字错误。检查文件是否已移动,重命名或   删除。

控制器

use Symfony\Component\HttpFoundation\StreamedResponse;
$headers = array(
            'Content-Type'        => 'text/csv',
            'Cache-Control'       => 'must-revalidate, post-check=0, pre-check=0',
            'Content-Disposition' => 'attachment; filename=test.csv',
            'Expires'             => '0',
            'Pragma'              => 'public',
        );

        $response = new StreamedResponse(function(){
            // Open output stream
            $handle = fopen('php://output', 'w');

            // Add CSV headers
            fputcsv($handle, [
                "invoice_number",
                "title",
            ]);


            Order::chunk(500, function($orders) use($handle) {
                    foreach ($orders as $user) {
                        // Add a new row with data
                        fputcsv($handle, [
                            $user->invoice_number,
                            $user->courtesy_title,
                        ]);
                    }
                });

            // Close the output stream
            fclose($handle);
        }, 200, $headers);

        return $response->send();

1 个答案:

答案 0 :(得分:-1)

好的,您的浏览器收到了404错误。

有几个原因。

  1. 检查您的路线,确认您尝试访问现有路线。另请注意,路由区分大小写。这意味着Route::get('SuPeRCRaZyPaGe', function (){...})/supercrazypage将无法访问/SuperCrazyPage

  2. 检查中间件,可能会抛出未找到的异常或abort(404)

  3. 检查您的代码,如果您正在使用Eloquent模型,并且遇到findOrFailfirstOrFail个案例。检查它们,它们可以抛出ModelNotFoundException(转换为404错误)。

  4. 当然,请不要忘记检查laravel的日志(~/storage/logs/laravel.log)并启用调试设置。