【发布时间】:2011-01-19 19:04:30
【问题描述】:
我在网页上有一组链接到 PDF 表单和 .doc 表单。这些文件不存储在数据库中,只是按原样存储在本地服务器上。是否可以使用 Javascript 检索 PDF 或 DOC 文件的最后修改日期?我对使用 Javascript 没有任何特殊需要,但最好使用它。
更新:现在我意识到 Javascript 无法访问文件系统,是否有替代方法?
【问题讨论】:
标签: javascript metadata
我在网页上有一组链接到 PDF 表单和 .doc 表单。这些文件不存储在数据库中,只是按原样存储在本地服务器上。是否可以使用 Javascript 检索 PDF 或 DOC 文件的最后修改日期?我对使用 Javascript 没有任何特殊需要,但最好使用它。
更新:现在我意识到 Javascript 无法访问文件系统,是否有替代方法?
【问题讨论】:
标签: javascript metadata
不,不是。无法通过 JavaScript 访问文件系统
【讨论】:
如果接口通过 HTTP 公开,则可以。另一种说法是:公开一个 WebService 端点以访问此信息。
当然,出于安全原因,您不能直接访问文件系统。
【讨论】:
如果它与调用函数在同一台服务器上,则可以使用 XMLHttpRequest-
这个例子不是异步的,但是如果你愿意,你可以这样做。
function fetchHeader(url, wch) {
try {
var req=new XMLHttpRequest();
req.open("HEAD", url, false);
req.send(null);
if(req.status== 200){
return req.getResponseHeader(wch);
}
else return false;
} catch(er) {
return er.message;
}
}
alert(fetchHeader(location.href,'Last-Modified'));
【讨论】:
<div id="Updated">This page was last updated: ### </div>这样的div中显示结果?
这似乎很有用,对我有用 - 给你“本地”日期
document.lastModified
与上面的 req.getResponseHeader() 选择相比,它减少了一次往返/http 调用。
【讨论】:
current document 的最后修改。 kennebec 的解决方案给出了您拥有 URL 的 arbitrary file 的最后修改。
您可以使用File.lastModified 属性获取文件的最后修改日期,作为自 Unix 纪元以来的毫秒数。
示例:
const file = document.getElementById('input').files[0];
const lastModifiedDate = new Date(file.lastModified);
console.log(`Last Modified Date: ${lastModifiedDate}`);
【讨论】:
使用现代fetch 方法:
var lastMod = null;
fetch(xmlPath).then(r => {
lastMod = r.headers.get('Last-Modified');
return r.text();
})
【讨论】:
async 方法中,所以我不得不await fetch(xmlPath)...,并将return 语句移到fetch() 之外:return lastMod