PHP客户端浏览器下载

PHP客户端浏览器下载,php,Php,我给出了PDF的确切文件路径,PDF也可以在不中断的情况下下载。但当移除“退出”后的退出时。PDF不下载不发生。我正在做一些退出函数后的处理 header('Content-Description: File Transfer'); header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename='.$pdf_filename); header('Content-Transfer

我给出了PDF的确切文件路径,PDF也可以在不中断的情况下下载。但当移除“退出”后的退出时。PDF不下载不发生。我正在做一些退出函数后的处理

header('Content-Description: File Transfer');
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename='.$pdf_filename);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
readfile($file);
session_regenerate_id();
exit;

我相信下面的代码会对您有用,但首先删除exit,然后在末尾刷新输出,在顶部添加ignore user abort,并在刷新后继续处理

ignore_user_abort(true);
//your code of force download using php readfile
ob_end_flush();
flush();
//code after flushing the output

你不能像那样重新生成id。它通过重新设置会话ID cookie来工作,并且在执行输出后不能发出新的cookie头,这就是readfile()所做的。实际上,我想在流的中间添加此下载。下载后,我将取消tmp文件和一些sql更新过程的链接。所以,如何在这里实现我的目标并不重要。sess_regen_id使用header()将新id发送给用户,在执行输出后,这将不起作用。