Доступ локальное время изменения файла в JavaScript - PullRequest
5 голосов
/ 21 июля 2009

Есть ли способ получить время изменения файла (должен работать ctime или mtime), к которому осуществляется локальный доступ через javascript.

Я хочу перейти к файлу: ///home/me/mtime.html и сделать так, чтобы javascript сообщил мне, что /home/me/file.txt был изменен 2 минуты назад или что-то в этом роде. Я понимаю, что javascript имеет ограниченный доступ к файлам из-за проблем с безопасностью, но есть ли хитрость, поскольку все это делается локально.

Спасибо.

Ответы [ 4 ]

1 голос
/ 22 июля 2009

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-апплет?

1 голос
/ 21 июля 2009

Вот некоторый javascript, использующий ActiveX, который, я думаю, мог бы вам помочь:

<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 из текущего времени.

0 голосов
/ 21 июля 2009

Извините, но это невозможно с JavaScript.

0 голосов
/ 21 июля 2009

Возможно, через ActiveX или какой-либо другой компонент браузера, который позволяет пользователю предоставлять расширенные разрешения браузеру, например, HTA или что-то вроде Google Gears.

Другими словами, «Нет», если вы не готовы сделать что-то нестандартное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...