fputcsv在浏览器中显示数据而不是下载CSV文件

3
我正在使用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文件下载。我不知道出了什么问题。欢迎提出任何建议。

2个回答

1

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


1
你无法控制浏览器如何处理text/csv内容类型,但是你可以告诉浏览器将数据视为二进制数据。 header('Content-Type: application/octet-stream');

谢谢你的回答,我将header('Content-Type: text/csv; charset=utf-8');替换为header('Content-Type: binary/octet-stream');但是它没有起作用。 - wplearner
尝试使用 application/octet-stream; - Alex Barker
如果它仍然显示,则可能是您的内容类型标头或浏览器出现了问题。请在开发者控制台中仔细检查您的标头,确保内容类型与您所想的一致。如果它在浏览器以外的其他程序中打开,这是您配置的预期行为。 - Alex Barker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接