这是我正在尝试做的。我有一系列的报告,他们也希望能够下载为逗号分隔的文本文件。我已经阅读了大量页面,人们只是简单地回应结果而不是创建文件,但是当我尝试将其输出到它们所在的页面时。使用php创建和下载文本文件
我这个在每个表单报告
Export File<input type="checkbox" name="export" value="1" />
所以在文章中,我可以检查,如果他们试图导出文件。如果他们是我试图做到这一点:
if($_POST['export'] == '1')
{
$filename = date("Instructors by DOB - ".$month) . '.txt';
$content = "";
# Titlte of the CSV
$content = "Name,Address,City,State,Zip,DOB\n";
for($i=0;$i<count($instructors);$i++)
$content .= ""; //fill content
fwrite($filename, $content);
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Length: ". filesize("$filename").";");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/octet-stream; ");
header("Content-Transfer-Encoding: binary");
readfile($filename);
}
基本上页面刷新,但没有文件被推下载。任何人都可以指出我错过了什么吗?
编辑 我想我并不完全清楚。这不在仅创建和下载文件的页面上,而是位于也显示报告的页面上。所以当我把一个exit();读取文件后,页面的其余部分加载空白。我还需要在此页面上显示报告。我想这也可能与它不下载的原因有关,因为这个页面已经发送了标题信息。
尝试关闭文件写出来之后后退出脚本..没有帮助? – SuperSaiyan
是否创建了该文件?另外,你应该在'readfile()'之后退出脚本。 – nickb
为什么不直接在显示器的同一页面上生成可下载内容的链接?这样他们就可以不间断地查看报告并选择是否要下载它,而不是首先决定是否要在查看它之前下载它。主动与被动。 这将解决您的头问题。 – aowie1