我希望我的用户下载.csv文件。
控制器中的代码可在本地计算机和开发服务器上完美运行。但是,它在生产服务器上不起作用。
框架为Laravel 5.5.44
PHP版本为7.2
$videos = Video::whereNotNull('title')->get();
//First row for labels
$list = array([
'id' => 'Video ID','director' => 'Director','title' => 'Title',]);
foreach($videos as $video) {
$list[] = [
'id' => $video->id,'director' => $video->director,'title' => $video->title,];
}
$today = date('Ymd');
$filename = $today.'-list.csv';
$fp = fopen(storage_path($filename),'w');
foreach ($list as $fields) {
fputcsv($fp,$fields);
}
fclose($fp);
return response()->download(storage_path($filename));
在生产服务器上触发控制器时,我得到:
prod.ERROR: The content cannot be set on a BinaryFileResponse instance.
而不是下载文件。
我刚刚注意到,只有将应用程序环境设置为正式版时,才会引发异常。
通过设置,我能够在本地计算机上重现该行为
APP_ENV=prod
在.env
文件中。
我很困惑。我在官方文档中找不到足够的信息,但我仍然不知道如何解决这个奇怪的问题。