使用当前用户时间作为文件名下载

4

简而言之

当用户下载文件时,如何让文件名包含用户的本地时间?
例如:

<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是静态资源还是服务器端生成的? - Álvaro González
@ÁlvaroGonzález 假设不需要 PHP。 - user5306470
1个回答

19
你可以最简单地使用 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'
}

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

这是一个获取时间的示例(基于此答案):

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()这样。我只是想表示它是一个字符串。刚刚修改了我的答案来展示这一点。 - TheRuler
好的,完成了。这基本上是您在上面发布的第二个链接中的相同代码。 - TheRuler
好的,这就是您需要的。 - TheRuler
小提示:变量m同时用于月份和分钟。 - Blareprefix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接