【问题标题】:Download With Current User Time As Filename以当前用户时间作为文件名下载
【发布时间】:2017-06-11 14:20:37
【问题描述】:

总之

如何在下载文件时使文件名包含用户的当地时间?
示例:

<a href="/pizza.pdf" download="pizza-CURRENT-USER-TIME-HERE.pdf">Click here</a>

长篇

如果下载的名称中有用户的时间

使用 PHP,我知道我可以将 echo 变量添加到文件名中,如下所示:

PHP:

date_default_timezone_set('America/New_York');
$current_date = date('Y-F-j-h-i-s');

HTML:

<a href="/pizza.pdf" download="pizza-<?php echo $current_date; ?>.pdf">Click here</a>

或者,使用 JavaScript,我可以在 链接(或屏幕上的任何位置)中打印用户的当地时间。

如何获取用户的本地时间作为下载属性的值?

我愿意使用 PHP、JS、JQuery 等。

【问题讨论】:

  • PHP在这里扮演什么角色? pizza.pdf 是静态资产还是服务器端生成的?
  • @ÁlvaroGonzález 假设不需要 PHP。

标签: javascript php html download


【解决方案1】:

您可以使用onclick 属性最简单地做到这一点。

<a href="/pizza.pdf" download="pizza-CURRENT-USER-TIME-HERE.pdf" onclick="this.download='pizza-' + getFormattedTime() + '.pdf'">Click here</a>

或者,如果你想使用 Jquery:

在 HTML 中(添加一个 id 以便我们选择):

<a href="/pizza.pdf" download="pizza-CURRENT-USER-TIME-HERE.pdf" id="download">Click here</a>

在 JS 中:

$("#download").click(function() {
    this.download= 'pizza-' + getFormattedTime() + '.pdf'
}

现在,当用户点击链接时,下载名称将立即更改为当前时间。

这是一个如何获取时间的示例(主要基于this answer):

function getFormattedTime() {
    var today = new Date();
    var y = today.getFullYear();
    // JavaScript months are 0-based.
    var m = today.getMonth() + 1;
    var d = today.getDate();
    var h = today.getHours();
    var mi = today.getMinutes();
    var s = today.getSeconds();
    return y + "-" + m + "-" + d + "-" + h + "-" + mi + "-" + s;
}

【讨论】:

  • 嗯,它实际上可能是一个函数调用,比如getFormattedTime()。我只是想表明它是一个字符串。刚刚修改了我的答案以显示这一点。
  • 好的,完成。它与您在上面发布的第二个链接中的代码基本相同。
  • 好的,你去。
  • 小注:变量m同时用于月份和分钟
猜你喜欢
  • 2011-11-21
  • 2011-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多