这是用户点击“下载”时运行的php代码。基本上我将一堆文件添加到zip文件,然后配置标头然后调用readfile。然后我尝试使用'unlink'删除文件失败。因此,在第一次单击下载后,zip文件将保留在文件夹中。出于某种原因,第一次单击时返回一个空的zip文件,然后在每次后续单击时返回正确的zip文件(直到我手动输入zip文件)。因此,当zip文件开始时,它似乎只能正常工作。
ignore_user_abort(true);
$path_parts = pathinfo($site_root.$data->name);
$proj_path = $site_root.$path_parts['basename'];
$zip = new ZipArchive();
$filename = $data->name.".zip";
$zip->open($site_root.$filename, ZipArchive::CREATE | ZipArchive::OVERWRITE);
$files = preg_grep('/^([^.])/', scandir($proj_path));
foreach ($files as $f) {
$zip->addfile($proj_path."/".$f, $data->name."/".$f);
}
$zip->close;
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($site_root.$filename));
ob_end_flush();
readfile($site_root.$filename);
unlink($site_root.$filename);
是否有某些原因导致您无法压缩文件并立即阅读?它是否需要拉链接近几秒才能完成它的结束?