【问题标题】:Is it possible to retrieve the last modified date of a file using Javascript?是否可以使用 Javascript 检索文件的最后修改日期?
【发布时间】:2011-01-19 19:04:30
【问题描述】:

我在网页上有一组链接到 PDF 表单和 .doc 表单。这些文件不存储在数据库中,只是按原样存储在本地服务器上。是否可以使用 Javascript 检索 PDF 或 DOC 文件的最后修改日期?我对使用 Javascript 没有任何特殊需要,但最好使用它。

更新:现在我意识到 Javascript 无法访问文件系统,是否有替代方法?

【问题讨论】:

    标签: javascript metadata


    【解决方案1】:

    不,不是。无法通过 JavaScript 访问文件系统

    【讨论】:

    • 但是您可以向服务器端进程发送 AJAX 请求,以在 JavaScript 中获取所需的信息。
    【解决方案2】:

    如果接口通过 HTTP 公开,则可以。另一种说法是:公开一个 WebService 端点以访问此信息。

    当然,出于安全原因,您不能直接访问文件系统。

    【讨论】:

      【解决方案3】:

      如果它与调用函数在同一台服务器上,则可以使用 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中显示结果?
      • 非常感谢您提供此代码 Kennebec,效果很好!
      【解决方案4】:

      这似乎很有用,对我有用 - 给你“本地”日期

      document.lastModified 
      

      与上面的 req.getResponseHeader() 选择相比,它减少了一次往返/http 调用。

      【讨论】:

      • 这给出了current document 的最后修改。 kennebec 的解决方案给出了您拥有 URL 的 arbitrary file 的最后修改。
      【解决方案5】:

      文件.lastModified

      您可以使用File.lastModified 属性获取文件的最后修改日期,作为自 Unix 纪元以来的毫秒数。

      示例:

      const file = document.getElementById('input').files[0];
      const lastModifiedDate = new Date(file.lastModified);
      
      console.log(`Last Modified Date: ${lastModifiedDate}`);
      

      【讨论】:

        【解决方案6】:

        使用现代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
        猜你喜欢
        • 1970-01-01
        • 2011-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-22
        • 1970-01-01
        相关资源
        最近更新 更多