因为在推出自定义标头之前您无法输出任何内容,我建议使用 JS 重定向到下载,这通常使您保持在同一页面上(只要您只是处理 zip 内容而不是其他内容)。
所以,试试这个:
$download = 'example.zip';
echo '<head> <script type="text/javascript"> function doRedirect(){window.location = "'.$download.'"}</script>
</head><html><script type="text/javascript"> doRedirect() </script> <...Example web page...</html>';
或者,如果您需要一个计时器:
echo '<head> <script type="text/javascript"> function doRedirect(){window.location = "'.$download.'"}</script>
</head><html><script type="text/javascript">
setTimeout(doRedirect(),1000);//wait one second</script> <...Example web page...</html>';
编辑:
如果要隐藏文件路径,我建议制作一个下载脚本,JS 将重定向到该脚本。
所以基本上,做你正在做的事情,然后使用 JS 指向它。像这样:
下载.php:
//use an ID or something that links to the file and get it using the GET method (url params)
$downloadID = $_GET['id'];
//work out the download path from the ID here and put it in $download
if ( $downloadID === 662 )
{
$download = 'example.zip';//...
}
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename=$download');
readfile($download);
然后在您的主 HTML 文件中,使用 JS 以正确的 ID 指向它:
<head> <script type="text/javascript"> function doRedirect(){window.location = "Download.php?id=662"}</script>
</head><html><script type="text/javascript"> doRedirect() </script> <...Example web page...</html>