【问题标题】:fputcsv displaying data in browser instead of downloading data as CSV filefputcsv 在浏览器中显示数据,而不是将数据下载为 CSV 文件
【发布时间】:2020-05-07 18:37:32
【问题描述】:

我正在使用 fputcsv 函数将数据导出为 CSV 文件,但它在浏览器中显示所有数据,而不是将其下载为 CSV 文件。这是我的代码

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=export.csv');
$output = fopen('php://output', 'w');
fputcsv($output, $column_headings);
fclose($output);

数据在浏览器中正确显示,但我想将其下载为 export.csv 文件。我不知道这有什么问题。对此的任何建议将不胜感激。

【问题讨论】:

    标签: php fputcsv


    【解决方案1】:

    您无法控制浏览器如何处理 text/csv 内容类型,但是,您可以告诉浏览器它应该将数据视为二进制。

    header('Content-Type: application/octet-stream');

    【讨论】:

    • 感谢您的回答,我替换了 header('Content-Type: text/csv; charset=utf-8'); with header('Content-Type: binary/octet-stream');但它没有用。
    • 试试 application/octet-stream;
    • 如果它仍在显示,则说明您的内容类型标题或浏览器有问题。在开发人员控制台中仔细检查您的标题,并确保内容类型是您认为的内容,如果它在浏览器以外的其他程序中打开,这是您的配置的预期行为。
    【解决方案2】:

    我在文件开头添加了ob_start();,现在我可以导出文件了。

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多