Как получить время изменения файла, загружаемого в JavaScript / PHP? - PullRequest
8 голосов
/ 30 сентября 2011

Есть ли способ получить фактическое время создания / изменения загружаемого файла с использованием JavaScript / PHP?

Что касается JavaScript, я много исследовал, пробовал немало кодов, но безуспешно (возможно, пытаясь сделать возможное из невозможного).

Что касается PHP, с использованием filectime () и filemtime () , он показывает только дату / время загрузки файла, а не время его создания / изменено на источнике.

Короче говоря, я хочу проверить m-время файла до / во время / после загрузки (где это возможно) и решить, сохранять или нет файл на сервере, и сообщить об этом обратно клиент.

Ответы [ 3 ]

13 голосов
/ 30 сентября 2011

Если вы говорите о дате / времени файла на компьютере пользователя , вы можете получить это через File API ( support ), которыйобеспечивает lastModified, то есть дату / время в виде количества миллисекунд с начала эпохи (если вы хотите Date, вы можете передать это в new Date).(Существует также устаревшая lastModifiedDate, но она не рекомендуется и не поддерживается в Safari [по крайней мере].) File API универсально поддерживается в современных браузерах (особая функция, которую вы будете использовать, этоFile объект ).Вы получите значение из объекта File и включите эту информацию в отдельное (например, скрытое) поле.

Вот примерный, но полный пример чтения даты последнего изменения (* 1021)* Живая копия ):

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Show File Modified</title>
<style type='text/css'>
body {
    font-family: sans-serif;
}
</style>
<script type='text/javascript'>

    function showFileModified() {
        var input, file;

        // Testing for 'function' is more specific and correct, but doesn't work with Safari 6.x
        if (typeof window.FileReader !== 'function' &&
            typeof window.FileReader !== 'object') {
            write("The file API isn't supported on this browser yet.");
            return;
        }

        input = document.getElementById('filename');
        if (!input) {
            write("Um, couldn't find the filename element.");
        }
        else if (!input.files) {
            write("This browser doesn't seem to support the `files` property of file inputs.");
        }
        else if (!input.files[0]) {
            write("Please select a file before clicking 'Show Modified'");
        }
        else {
            file = input.files[0];
            write("The last modified date of file '" + file.name + "' is " + new Date(file.lastModified));
        }

        function write(msg) {
            var p = document.createElement('p');
            p.innerHTML = msg;
            document.body.appendChild(p);
        }
    }

</script>
</head>
<body>
<form action='#' onsubmit="return false;">
<input type='file' id='filename'>
<input type='button' id='btnShowModified' value='Show Modified' onclick='showFileModified();'>
</form>
</body>
</html>
0 голосов
/ 28 марта 2013

Возможно, вы можете использовать javascript для получения времени последнего изменения , а затем использовать его в каком-то другом javacript для сортировки по этому.Это время будет в GMT.

var xmlhttp = createXMLHTTPObject();
xmlhttp.open("HEAD", "http://myurl/interesting_image.jpg" ,true);
xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4) {
    alert("Last modified: "+
     var lastModTimeForInterestingImage = xmlhttp.getResponseHeader("Last-Modified"))
  }
}
xmlhttp.send(null);
0 голосов
/ 30 сентября 2011

JavaScript не имеет доступа к локальной файловой системе, поэтому вы не можете получить эту информацию без использования Flash, Java или Active-x.

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