use*_*942 3 php filenames download delay
我正在寻找更改文件名-adds当前日期的PHP代码,并开始延迟下载文件.如果下载无法启动,可以通过单击链接下载添加日期的文件.
这样的事情:你的下载将在几分钟后开始......如果没有任何反应,请点击<a href="">here</a>.
我发现只有这个:
// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// The PDF source is in original.pdf
readfile('plik.pdf');
Run Code Online (Sandbox Code Playgroud)
请帮我.
您将需要两个部分来有效地执行此操作...在显示的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>
Run Code Online (Sandbox Code Playgroud)
然后,您需要的realdl.php只是以下内容:
$file_contents = load_file_from_id($_GET['id']);
$file_name = determine_filename();
header("Content-Disposition: attachment; filename=$file_name");
echo $file_contents;
Run Code Online (Sandbox Code Playgroud)
当然,您需要提供获取文件内容的方法(只需从磁盘或可能的数据库中读取)以及确定文件名.要将时间用作文件名格式,请参阅http://us3.php.net/manual/en/function.strftime.php以获取该strftime函数.
根据文件的存储方式,您可以更有效地使用fpassthru本地文件作为示例.Content-Length如果您可以在下载之前确定文件大小(即它是您要发送的静态内容),您也可能希望发送标题.