您将需要两个部分来有效地执行此操作...在您显示的 PHP 文件(我们称之为download.php
)中,您需要启动一个 Javascript 函数,该函数将您的客户倒计时到零。当它达到零时,它只是重定向到真正的下载位置(我们称之为realdl.php
)。该文件实际上会在重定向或单击时抓取文件内容并将其发送给用户。
以下是您需要的一些元素download.php
:
<? $file_dl_url = "/realdl.php?id=FILEID"; ?>
<script language="javascript">
var elapsed = 0;
function countdown {
// see if 5 seconds have passed
if (elapsed >= 5) {
window.location = <?= $file_dl_url ?>;
} else {
// update countdown display & wait another second
elapsed++;
setTimeout("countdown", 1000);
}
}
setTimeout("countdown", 1000);
</script>
<a href="<?= $file_dl_url ?>">Click Here</a>
然后,您realdl.php
只需要以下内容:
$file_contents = load_file_from_id($_GET['id']);
$file_name = determine_filename();
header("Content-Disposition: attachment; filename=$file_name");
echo $file_contents;
当然,您需要提供获取文件内容(从磁盘或可能是数据库读取)以及确定文件名的方法。要将时间用作文件名格式,请参阅http://us3.php.net/manual/en/function.strftime.php了解该strftime
函数。
根据文件的存储方式,您可以更有效,fpassthru
例如使用本地文件。Content-Length
如果您可以在下载之前确定文件大小(即,它是您发送的静态内容),您可能还想发送标头。