我正在开发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';
它也不起作用。我想念什么吗?
答案 0 :(得分:1)
如果在“发送文件”后回显给用户,则将损坏文件。
您必须将php代码视为下载链接,用户单击它并获得一个文件。另外,发送回声不会进入用户屏幕,因为您有此标题
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");