首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异常“不能在BinaryFileResponse实例上设置内容。仅在生产服务器上引发

异常“不能在BinaryFileResponse实例上设置内容。仅在生产服务器上引发
EN

Stack Overflow用户
提问于 2019-11-05 20:45:38
回答 1查看 558关注 0票数 0

我希望我的用户下载一个.csv文件。

我的控制器中的代码在我的本地机器和开发服务器上运行得非常完美。但是,它不能在生产服务器上工作。

该框架为Laravel 5.5.44

PHP版本是7.2

代码语言:javascript
复制
$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文件中。

我很困惑。我无法在官方文档中找到足够的信息,我仍然不知道如何解决这个奇怪的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-05 21:21:14

您的AfterMiddleware试图在响应上设置内容,这是您不能对BinaryFileResponse对象执行的,任何对setContent的调用都会导致此错误。

您必须弄清楚是否需要正在使用的vrkansagara/lara-out-press中间件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58719230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档