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

我正在寻找更改文件名的php代码—添加当前日期,并延迟开始下载文件。如果下载不会开始,则可以通过单击链接下载添加日期的文件

大概是这样的: 您的下载将在几分钟后开始。。。如果什么也没有发生,请单击

我发现只有这个:

// 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;