Php 更改下载文件名,并在单击或延迟后开始下载
我正在寻找更改文件名的php代码—添加当前日期,并延迟开始下载文件。如果下载不会开始,则可以通过单击链接下载添加日期的文件 大概是这样的: 您的下载将在几分钟后开始。。。如果什么也没有发生,请单击Php 更改下载文件名,并在单击或延迟后开始下载,php,download,delay,filenames,Php,Download,Delay,Filenames,我正在寻找更改文件名的php代码—添加当前日期,并延迟开始下载文件。如果下载不会开始,则可以通过单击链接下载添加日期的文件 大概是这样的: 您的下载将在几分钟后开始。。。如果什么也没有发生,请单击 我发现只有这个: // It will be called downloaded.pdf header('Content-Disposition: attachment; filename="downloaded.pdf"'); // The PDF source is in original.pd
我发现只有这个:
// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');
// The PDF source is in original.pdf
readfile('plik.pdf');
请帮助我。您可以尝试添加一些时间-日期变量,例如:
$delay = 10; #delay of 10 seconds
sleep($delay);
$timedt = time()+$delay;
$filename = 'downloaded-'.$timedt.'.pdf';
header('Content-Disposition: attachment; filename="{$filename}"');
即兴制作并添加一些功能来检查条件(如果/否则)时间-日期检查,而不是设置睡眠。添加文件名以供下载。我不建议在服务器端(PHP)使用睡眠或其他延迟。您可以使用某种JavaScript代码向用户显示所需的通知,并将页面重定向到文件下载URL(PHP脚本)。在那里,您可以使用Content Disposition header更改正在下载的文件的名称
如果需要获取要重定向到的URL,可以使用PHP部分生成JavaScript代码。您需要两部分才能有效地完成此操作。。。在显示的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>
当然,您需要提供获取文件内容(从磁盘读取或可能从数据库读取)以及确定文件名的方法。要将时间用作文件名格式,请参阅了解strftime
函数
根据文件的存储方式,您可以更有效地使用本地文件的
fpassthru
。如果您可以在下载之前确定文件大小(即,您正在发送的是静态内容),则您可能还需要发送内容长度
标题。您所说的-添加当前日期是什么意思??
$file_contents = load_file_from_id($_GET['id']);
$file_name = determine_filename();
header("Content-Disposition: attachment; filename=$file_name");
echo $file_contents;