为什么刷新后需要读取文件


why is readfile necessary after a flush

所以我正在使用我在互联网上找到的一个解决方案来发送文件,它确实有效!但我真的不明白为什么:(

在我的解决方案中,我生成了一个CSV(测试;测试;测试)。

所以我告诉我的标题这是一个csv文件,它也应该是一个附件:

<?php
$nom = time().'.csv';
header('Content-type: text/csv');
header('Content-disposition: attachment;filename='.$nom);
?>

我理解这一点,这很简单,但当涉及到:时

flush();
readfile($nom);

我理解flush();将缓冲区交付给客户端是否正确?但是为什么是readfile();必需的我的意思是,如果发送了内容,我为什么要再次读取文件?

readfile($nom);实际上正在读取您的文件并回显它,因此客户端可以接收数据。否则,csv输出将为空。

flush()只是确保在开始写入输出之前清空输出缓冲区。我认为在这一点上甚至不需要。这样做只会确保使用readfile写入的输出缓冲区是空的。