当我用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