我正在寻找更改文件名的 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');
https://stackoverflow.com/a/6694505 https://stackoverflow.com/a/6694505
请帮我。
您将需要两个部分才能有效地完成此操作...在显示的 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;
当然,您需要提供获取文件内容(仅从磁盘或可能从数据库读取)以及确定文件名的方法。要将时间用作文件名格式,请参阅https://www.php.net/manual/en/function.strftime.php https://www.php.net/manual/en/function.strftime.php为了strftime
功能。
根据文件的存储方式,您可以更有效地使用fpassthru
以本地文件为例。您可能还想发送Content-Length
如果您可以在下载之前确定文件大小(即您要发送的静态内容),请添加标头。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)