如何在JavaScript中获取上传文件的修改时间?

如何在JavaScript中获取上传文件的修改时间?,javascript,file,time,Javascript,File,Time,是否有可能使用JavaScript获得上传文件的实际创建/修改时间 至于PHP,使用filectime()和filemtime(),它只显示上载文件的日期/时间,而不是在源代码上实际创建/修改文件的时间 简而言之,我想要的是在上传前/上传中/上传后检查文件的m时间(如果可能的话),并决定是否将文件存储在服务器上,并将其报告给客户端。JavaScript无法访问本地文件系统,因此如果不使用Flash,您无法获取此信息,Java或Active-x。如果您谈论的是用户机器上的文件日期/时间,您可以通过

是否有可能使用JavaScript获得上传文件的实际创建/修改时间

至于PHP,使用
filectime()
filemtime()
,它只显示上载文件的日期/时间,而不是在源代码上实际创建/修改文件的时间


简而言之,我想要的是在上传前/上传中/上传后检查文件的m时间(如果可能的话),并决定是否将文件存储在服务器上,并将其报告给客户端。

JavaScript无法访问本地文件系统,因此如果不使用Flash,您无法获取此信息,Java或Active-x。

如果您谈论的是用户机器上的文件日期/时间,您可以通过()获取,它提供了日期/时间,以从纪元开始的毫秒为单位(如果您想要
日期
,可以将其传递到
新日期
)。(还有一些不推荐使用的,但Safari[至少]不支持这种功能。)现代浏览器普遍支持文件API(您将使用的特定功能是)。您可以从
文件
对象中获取值,并将该信息包含在单独的(例如,隐藏)字段中

下面是一个粗略但完整的读取上次修改日期()的示例:


显示已修改的文件
身体{
字体系列:无衬线;
}
函数showFileModified(){
var输入,文件;
//对“功能”的测试更加具体和正确,但不适用于Safari 6.x
if(type of window.FileReader!=“函数”&&
typeof window.FileReader!==“对象”){
写入(“此浏览器尚不支持文件API。”);
返回;
}
输入=document.getElementById('filename');
如果(!输入){
写入(“嗯,找不到filename元素。”);
}
如果(!input.files){
写入(“此浏览器似乎不支持文件输入的`files`属性。”);
}
如果(!input.files[0]),则为else{
写入(“请在单击“显示已修改”之前选择一个文件”);
}
否则{
file=input.files[0];
写入(“文件的上次修改日期'”+file.name+“'为“+新日期(file.lastModified));
}
函数写入(msg){
var p=document.createElement('p');
p、 innerHTML=msg;
文件.正文.附件(p);
}
}

无法从服务器上上传的文件中获取时间的原因是,请求中只传输文件的内容,而不是客户端的文件系统元数据。

也许可以使用javascript获取上次修改的时间,然后在其他javascript中使用该时间对其进行排序。这次是格林尼治标准时间

var xmlhttp = createXMLHTTPObject();
xmlhttp.open("HEAD", "http://myurl/interesting_image.jpg" ,true);
xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4) {
    alert("Last modified: "+
     var lastModTimeForInterestingImage = xmlhttp.getResponseHeader("Last-Modified"))
  }
}
xmlhttp.send(null);

“JavaScript无法访问本地文件系统”,它在一些浏览器上可以访问,如Chrome、Opera、Firefox……多亏了Diodeus,Flash似乎是一个不错的选择。我会看看这是否符合我的逻辑。我必须从同一个页面上传多个文件以及m-time。谢谢Crowder,你的示例可以在Chrome上运行。这看起来很容易。我的客户的用户将只使用IE,即IE6或可能是IE7,而不是更高。所以我只在IE中测试了自己的代码。顺便说一句,你知道有任何手机浏览器支持这个API吗。这比IE(或者说PC)更重要。不管怎样,再次谢谢。谢谢!在Safari中,该字段似乎被称为
lastModified
,而不是
lastModifiedDate
@andrewdotn-感谢您提出这个问题。自第一次发布此答案以来,
lastModifiedDate
被弃用并替换为
lastModified
,Safari从未支持
lastModifiedDate
。我已经更新了答案以使用更标准(现在)的答案。:-)@T.J.克劳德太棒了,谢谢!我很高兴看到更新的演示在Safari中运行。
var xmlhttp = createXMLHTTPObject();
xmlhttp.open("HEAD", "http://myurl/interesting_image.jpg" ,true);
xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4) {
    alert("Last modified: "+
     var lastModTimeForInterestingImage = xmlhttp.getResponseHeader("Last-Modified"))
  }
}
xmlhttp.send(null);