PHP:在readfile

时间:2019-03-04 13:28:07

标签: php echo readfile

我正在开发Web应用程序。

如果已正确生成zip,则用户可以使用readfile()下载特定的zip文件。

但是,由于我已经集成了readfile()行,因此我无法在此行之前或之后回显任何内容。这是导致问题的代码示例:

 if($zip->status == 0){

    $zip->close();

    $file_url = './zip/'.$userDir.'.zip';
    header('Content-Type: application/octet-stream');
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\"");
    readfile($file_url);

    echo'
    <div class="alert alert-primary" role="alert">
    Success
    </div>';

  }

条件中的所有内容都被调用,除了末尾的回声线。当我删除readfile($ file_url)行时,将调用回显。

我还试图将回声线移到该行之前

$file_url = './zip/'.$userDir.'.zip';

它也不起作用。我想念什么吗?

1 个答案:

答案 0 :(得分:1)

如果在“发送文件”后回显给用户,则将损坏文件。

您必须将php代码视为下载链接,用户单击它并获得一个文件。另外,发送回声不会进入用户屏幕,因为您有此标题

header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");