我有一个php页面,可下载zip文件。通常,下载后,它会使用header('location:myfiles.php');
自动将用户还原到上一页( myfiles.php )。
执行页面时,它带我到myfiles.php
,但不会显示下载弹出窗口,因此无法下载zip文件。当我删除行header('location:myfiles.php');
时,可以按预期下载我的zip文件。
下面是我的代码的一部分。
//Some codes
if(file_exists($zip_name)){
// push to download the zip
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zip_name.'"');
readfile($zip_name);
// remove zip file is exists in temp path
unlink($zip_name);
}
session_start();
$_SESSION['correct']="Files downloaded sucessfully";
header('location:myfiles.php');
您能帮我找到解决方法吗?谢谢。
答案 0 :(得分:1)
考虑这些标题在做什么
这2和读取文件
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zip_name.'"');
readfile($zip_name);
正在将文件发送到浏览器上的当前页面。
这将与上面的代码一样运行
header('location:myfiles.php');
试图告诉浏览器转到另一个页面。如果这样做,那么您发送到浏览器的文件就会消失
因此,基本上将它们作为一个流程一起完成是没有意义的!
此外,在将任何实际数据发送到浏览器之后,您将无法发送
header('location:...)
,这当然是您在运行readfile($zip_name);
时所做的