2009-07-21 18 views
5

C'è un modo per ottenere l'ora di modifica di un file (sia Ctime che Mtime dovrebbero funzionare) a cui si accede localmente tramite javascript.Ora locale di modifica file in javascript

Voglio andare al file: ///home/me/mtime.html e avere il javascript mi ​​dice che /home/me/file.txt è stato modificato 2 minuti fa o qualcosa del genere. Capisco che javascript ha un accesso limitato ai file a causa di problemi di sicurezza, ma c'è qualche trucco dato che è tutto fatto localmente.

Grazie.

risposta

1

Firefox ha una serie di componenti sotto la sua XPCOM (tecnologia concorrente ActiveX) che potrebbe essere utilizzata per fare la stessa cosa.

Probabilmente qualcosa di simile (non testata):

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; 
} 

Per quanto riguarda Safari .... idea. Forse un applet java firmato?

+1

cool, penso che se riuscirò a farlo funzionare, Safari non sarà un problema. Grazie ancora. – plor

0

Probabilmente tramite ActiveX o qualche altro componente del browser che consente all'utente di concedere autorizzazioni estese al browser, come un HTA o qualcosa come Google Gears.

In altre parole, "No", a meno che non siate disposti a fare qualcosa di non standard.

0

Siamo spiacenti ma non è possibile con JavaScript.

1

Ecco alcuni javascript utilizzando ActiveX che credo possa aiutarti:

<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> 

Se avete bisogno di quanto tempo fa è stato modificato si avrebbe bisogno di qualche altro javascript per sottrarre DLM dal momento corrente.

+0

grazie, è quello che voglio, ma ActiveX è probabilmente il problema qui in quanto gli utenti useranno firefox o safari. – plor