无法使用Google Chrome从laravel响应中下载简单的CSV流

时间:2015-11-17 19:17:14

标签: php google-chrome laravel streaming httpresponse

当我在Safari / Firefox中使用/test-csv路径时,我可以下载单行csv文件。但是当我在Chrome中试用它时,它会在控制台的“网络”标签中显示“无法加载响应数据”。

*edit*

重要新细节:它可以在Windows计算机上的Chrome中运行,但不适用于我的Macbook Pro

*edit*

我尝试了Content-TypeContent-Disposition标题的多种变体无效。

当我遗漏所有标题时,我只在浏览器中输入一个字符串:"id,name,email"(无需下载)。

Chrome是否需要某种特殊标题让我强行下载此流数据?

use Symfony\Component\HttpFoundation\StreamedResponse;

Route::get('test-csv', function(){

        $response = new StreamedResponse(function(){
            // Open output stream
            $handle = fopen('php://output', 'w');
            fputcsv($handle, [
                'id',
                'name',
                'email'
            ]);
            fclose($handle);

        }, 200, [
            'Content-Type' => 'text/csv',
            'Content-Disposition' => 'attachment;filename=export.csv;',
        ]);


        return $response;
    });

1 个答案:

答案 0 :(得分:0)

@ Bogdan的评论让我意识到问题必定存在于我在Chrome中的安装/设置中。

我关闭了扩展程序并卸载并重新安装了chrome。它现在按预期工作。

如果@bogdan想要将他的评论/建议作为答案发布,我会将其标记为已接受的答案。