我在使用PHP header()时收到文件未找到错误

时间:2015-02-17 04:58:38

标签: php csv header

我有一个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文件,而且我无法看到我正在做什么(或不做什么),这会打破它。

非常感谢任何帮助!

2 个答案:

答案 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();