我正在生成一个 CSV,并且我希望 Laravel 强制下载它,但是文档 https://laravel.com/docs/5.3/responses#file-downloads仅提到我可以下载服务器上已存在的文件,并且我想在不将数据保存为文件的情况下执行此操作。
我设法做到了这一点(有效),但我想知道是否还有另一种更简洁的方法。
$headers = [
'Content-type' => 'text/csv',
'Content-Disposition' => 'attachment; filename="download.csv"',
];
return \Response::make($content, 200, $headers);
我也尝试过SplTempFileObject() http://php.net/manual/en/class.spltempfileobject.php,但我收到以下错误:The file "php://temp" does not exist
$tmpFile = new \SplTempFileObject();
$tmpFile->fwrite($content);
return response()->download($tmpFile);
Make a 响应宏 https://laravel.com/docs/5.3/responses#response-macros更清晰的内容配置/laravel 方法
将以下内容添加到您的App\Providers\AppServiceProvider
启动方式
\Response::macro('attachment', function ($content) {
$headers = [
'Content-type' => 'text/csv',
'Content-Disposition' => 'attachment; filename="download.csv"',
];
return \Response::make($content, 200, $headers);
});
然后在你的控制器或路由中你可以返回以下内容
return response()->attachment($content);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)