在上传之前,如何确定本地Windows计算机上文件的日期(使用php)


How do I determine the date of a file on the local windows machine, prior to uploading (with php)?

当我用PHP上传文件时,我想知道原始文件的日期。

当我使用文件时:

echo date("Y-m-d", filectime($_FILES['imagefile']['tmp_name'])) 

我得到今天的日期(我的服务器上的文件创建日期)。

如何获取存储在用户计算机上的原始文件的日期?

你没有。PHP 只能对它具有文件系统访问权限的文件进行日期处理。由于您从网络套接字获取数据,因此在服务器实际创建一个文件,然后将套接字接收的数据写入其中之前,到目前为止还没有文件。

您可以让客户端负责记录文件的"真实"日期,然后将其作为 POST 操作的一部分发送(HTML5 文件 API、使用 Flash、要求用户输入等),但随后您必须简单地从$_POST中提取该数据,它不会是发送的文件数据的属性。

在 PHP/服务器端,您不能,因为执行文件上传的客户端/浏览器不会传输此信息。

使用HTML5,

似乎可以使用HTML5文件API在客户端访问lastModified日期属性。如果您有如下输入文件:

<input type='file' name='foo'/>

您应该能够像这样访问它(未经测试):

var files = document.getElementById('foo').files;
var file = files[0];
var filedate = file.lastModifiedDate;

然后在表单传输之前将filedate存储在额外的隐藏输入字段中(再次:未经测试)。

另请参阅:

  • http://www.html5rocks.com/en/tutorials/file/dndfiles/
  • http://www.w3.org/TR/file-upload

使用filectime.对于Windows,它将返回上次更改文件的时间,对于Unix,它将返回更改时间,这是您可以获得的最好的时间,因为在Unix上没有创建时间(在大多数文件系统中)。不幸的是,如果您在 linux 上运行,则无法访问该信息,因为仅存储上次修改日期。

你为什么不试试filemtime。我希望下面的示例对您有所帮助。

echo "Last modified: ".date("F d Y H:i:s.",filemtime("test.txt"));

上次修改时间将是其创建时间。失败时,此函数将返回 false。

另请参阅:http://www.w3schools.com/php/func_filesystem_filemtime.asp