Php 标题下载实际页面内容,而不是csv文件I';我建造

Php 标题下载实际页面内容,而不是csv文件I';我建造,php,csv,header,Php,Csv,Header,我的目标是让浏览器下载一个csv文件,使用头文件来完成。出于某种尚未确定的原因,浏览器似乎正在下载当前页面的HTML内容(并且不是我给它的数组的内容) 以下是我一直在使用的代码: $arr1 = array(array("1","2","3","4"),array("2","1","6","6")); $tmp_handle = fopen('php://memory', 'r+'); fputcsv($tmp_handle, $arr1); header("Content-type: te

我的目标是让浏览器下载一个csv文件,使用头文件来完成。出于某种尚未确定的原因,浏览器似乎正在下载当前页面的HTML内容(并且不是我给它的数组的内容)

以下是我一直在使用的代码:

$arr1 = array(array("1","2","3","4"),array("2","1","6","6"));

$tmp_handle = fopen('php://memory', 'r+');
fputcsv($tmp_handle, $arr1);

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");

rewind($tmp_handle);
echo stream_get_contents($tmp_handle);
我已经遵循了许多文章的说明/所以我已经阅读了一些问题,我不知道这段代码有什么问题

我当然很感激能在这里得到的任何帮助

以下是完整的代码(根据要求):

尝试以下代码:

$csvData = array(
  array("1","2","3","4"),
  array("2","1","6","6")
);

$fp = fopen('php://memory', 'w+');
foreach ($csvData as $row) {
  fputcsv($fp, $row);
}

rewind($fp);
$csvFile = stream_get_contents($fp);
fclose($fp);

header('Content-Type: text/csv');
header('Content-Length: '.strlen($csvFile));
header('Content-Disposition: attachment; filename="file.csv"');

exit($csvFile);
我已经循环了数据来构建CSV,因为您的代码不会产生您期望的结果。在输出之前,我还以字符串的形式检索了该文件-这只是添加
内容长度
标题的一个好方法。我还有一个很重要的位,叫做
exit
,用于输出数据,防止在输出代码后执行更多的代码


如果您正在使用此代码,但仍然存在问题,则不会调用此代码-您应该检查此代码所包含的任何
If
语句等。

我已经尝试了您的代码段,并且它可以工作(CSV部分是Array,Array)。如果有更多的HTML内容,则不会显示整个代码段。这是WordPress脚本的一部分,因此我想知道此脚本之前是否有什么东西会把事情搞砸。当我使用此代码时,csv仅包含以下内容:
非常重要,csv文件输出之前不会发生任何输出。请发布一个链接到整个wordpress插件php。我可以告诉你问题是什么,但你必须将整个脚本添加到问题中才能找到它。您之所以得到这个结果,是因为我添加了
内容长度
标题。@Evan我只能假设上面的脚本包含在另一个脚本中,因为它不包含HTML文档的开头(
这是一个wordpress页面-因此,headers.php脚本在所有页面都包含HTML内容之前运行。现在让我试试你的建议!
$csvData = array(
  array("1","2","3","4"),
  array("2","1","6","6")
);

$fp = fopen('php://memory', 'w+');
foreach ($csvData as $row) {
  fputcsv($fp, $row);
}

rewind($fp);
$csvFile = stream_get_contents($fp);
fclose($fp);

header('Content-Type: text/csv');
header('Content-Length: '.strlen($csvFile));
header('Content-Disposition: attachment; filename="file.csv"');

exit($csvFile);