我有一个php文件,用于提供CSV下载。
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=users.csv');
echo $csvOut;
其中$csvOut
是我在另一个函数中生成的字符串。
问题是,当我导航到这个PHP文件时,我的浏览器给了我一个404文件未找到错误。当我删除header('Content-Disposition: attachment;filename=users.csv');
行时也会这样做。
但是,我注意到,如果我将header('Content-Type: text/csv');
更改为header('Content-Type: text/html');
,则会在屏幕上显示$csvOut
的内容,但仅在header('Content-Disposition: attachment;filename=users.csv');
被删除后才会显示。
这让我感到困惑,因为我之前已成功使用此代码来提供CSV文件,而且我无法看到我正在做什么(或不做什么),这会打破它。
非常感谢任何帮助!
答案 0 :(得分:0)
你试过这个:
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=users.csv');
echo $csvOut;
exit(); //Stop script from processing anything else and this will trigger the download
希望这有帮助
答案 1 :(得分:0)
首先尝试设置200 OK响应。我不知道为什么Content-Type
和/或Content-Disposition
标头返回文件实际存在时找不到的404,但它使我的脚本开始下载,所以它也可能对你有用:
<?php
header($_SERVER['SERVER_PROTOCOL'].' 200 OK');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename=users.csv');
echo file_get_contents($csvOut);
exit();