【问题标题】:why is readfile necessary after a flush为什么刷新后需要readfile
【发布时间】:2013-11-28 08:27:51
【问题描述】:

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

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

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

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

这个我明白,这很简单,但是说到:

flush();
readfile($nom);

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

【问题讨论】:

  • flush() 与发送文件内容无关,它只是刷新您已经回显的任何内容。
  • 在这种情况下,flush() 也会发送您指定的标头。

标签: php buffer readfile flush


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-18
    • 2015-03-02
    • 2020-12-03
    • 1970-01-01
    • 2016-08-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多