更改文件名以便下载,并在点击或延迟后开始下载

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)

/sf/answers/468615381/

请帮我.

jhe*_*ngs 5

您将需要两个部分来有效地执行此操作...在显示的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如果您可以在下载之前确定文件大小(即它是您要发送的静态内容),您也可能希望发送标题.