将用户直接指向显示感谢信息的静态页面。然后,使用 JavaScript 将 设置window.location
为您的下载脚本。
如果您的下载页面的标题设置正确,浏览器将开始下载文件,而您的用户正在阅读您的感谢信息。
如果用户禁用了 JavaScript,请确保显示直接下载链接。
例子:
索引.php
<a href="thankyou.php">Click here to download.</a>
谢谢你.php
<html>
<head>
<script type="text/javascript">
function startDownload() {
window.location = "/download.php";
}
</script>
</head>
<body onload="startDownload();">
<h1>Thank you!</h1>
<p>Your download will start in a moment. If it doesn't, use this <a href="download.php">direct link.</a></p>
</body>
下载.php
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
更新
为了将数据从index.php
on 传递到下载脚本,您可以使用GET
变量。该thankyou.php
页面的链接将成为thankyou.php?download=12
下载是您获取正确文件的 ID。然后,您可以通过在您的标记中回显该变量,将其传递给您的下载脚本,如下所示:
索引.php
<a href="thankyou.php?download=12">Click here to download.</a>
谢谢你.php
<html>
<head>
<script type="text/javascript">
function startDownload() {
window.location = "/download.php?file=<?=$_GET['download']?>";
}
</script>
</head>
<body onload="startDownload();">
<h1>Thank you!</h1>
<p>Your download will start in a moment. If it doesn't, use this <a href="download.php?file=<?=$_GET['download']?>">direct link.</a></p>
</body>
然后,您将获取下载脚本中的值并以您喜欢的任何方式处理它。