【问题标题】:Access local file modification time in JavaScript在 JavaScript 中访问本地文件修改时间
【发布时间】:2009-07-21 19:41:29
【问题描述】:

有没有办法获取通过 JavaScript 在本地访问的文件的修改时间(ctimemtime 都可以)?

我想去 file:///home/me/mtime.html 并让 JavaScript 告诉我 /home/me/file.txt 在 2 分钟前被修改过。我知道由于安全问题,JavaScript 对文件的访问是有限的,但是因为它都是在本地完成的,所以有一些技巧。

谢谢。

【问题讨论】:

    标签: javascript file


    【解决方案1】:

    Firefox 在其 XPCOM(ActiveX 竞争对手技术)下有一组组件,可以用来做同样的事情。

    大概是这样的(未经测试):

    function getLastModifiedTime(filePath) 
    {
        try 
        {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        } 
        catch (e) 
        {
            throw new Error("Permission to read file was denied.");
        }
    
        var file = Components.classes["@mozilla.org/file/local;1"]
        .createInstance(Components.interfaces.nsILocalFile);
    
        file.initWithPath( filePath );
    
        return file.lastModifiedTime;
    }
    

    至于 Safari.... 不知道。也许是一个签名的 Java 小程序?

    【讨论】:

    • 酷,我想如果我能让它工作,Safari 就不会成为问题。再次感谢。
    【解决方案2】:

    以下是一些使用 ActiveX 的 javascript,我认为可能会对您有所帮助:

    <script language=jscript runat=server> 
        var thisfile = <File_Path>; 
        thisfile = Server.MapPath(thisfile); 
        var fso = new ActiveXObject("Scripting.FileSystemObject"); 
        var fs = fso.GetFile(thisfile); 
        var dlm = fs.DateLastModified; 
        Response.Write("Last modified: " + dlm); 
    </script>
    

    如果您需要多久以前修改过,则需要一些其他 javascript 来从当前时间中减去 dlm。

    【讨论】:

    • 谢谢,这正是我想要的,但 ActiveX 可能是这里的问题,因为用户将使用 firefox 或 safari。
    【解决方案3】:

    可能通过 ActiveX 或其他允许用户向浏览器授予扩展权限的浏览器组件,例如 HTA 或通过 Google Gears 之类的东西。

    换句话说,“不”,除非你愿意做一些非标准的事情。

    【讨论】:

      【解决方案4】:

      抱歉,JavaScript 无法实现。

      【讨论】:

        猜你喜欢
        • 2020-11-17
        • 2017-03-30
        • 1970-01-01
        • 2017-11-24
        • 1970-01-01
        • 2016-09-06
        • 2010-09-27
        相关资源
        最近更新 更多