如果我们有以下
<form method="post" action="">
<input type="hidden" name="token" value="1">
<input type="submit">
</form>
<?php
if(isset($_POST['token']))
{
$v = 'NAME,COLOR
jack,blue
ivan,gold';
header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=\"file.csv\"");
header('Expires: ' . gmdate('D, d M Y H:i:s', gmmktime() - 3600) . ' GMT');
//header("Content-Length: " . filesize($path));
echo $v;
}
当我运行脚本时,浏览器会提示我下载,当下载文件并检查内容时,它还包含文件中的HTML($ v数据上方)标记。
我希望文件只包含 $ v 变量数据。
答案 0 :(得分:0)
输出的任何内容都将输出。 HTTP请求一次用于一个资源。您不能期望发送网页,也不希望将其作为文件内容的一部分。 PHP无法读懂您的想法并知道您的代码的哪一部分适用于浏览器,以及下载资源的部分内容。
你需要制作一个单独的脚本,它只会返回一个资源......要下载的文件。使用<?php
启动脚本,没有空格。如果您的文件纯粹是PHP(并且可能是它),请不要以?>
结束它以避免最后的空格。