Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Дата создания файла по URL (https://javascript.ru/forum/events/46960-data-sozdaniya-fajjla-po-url.html)

Preev 02.05.2014 09:32

Дата создания файла по URL
 
Добрый день.
Возможно ли в js по url получить дату создания файла? Интересует "чистый js" без библиотек.
Серверные решения мне в моем случае не помогут. Надеюсь на "возможно". Спасибо.

nerv_ 02.05.2014 10:49

Возможно, по цвету машины определить ее владельца?
Если "Вася Пупкин" на ней написать, то возможно.

Aetae 02.05.2014 11:15

Только last-modifed и только для своего домена.
Пример: http://stackoverflow.com/a/5748207
var getMTime = function(url, callback) {
  var xhr = XMLHttpRequest();
  xhr.open('HEAD', url, true); // use HEAD - we only need the headers
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
      var mtime = new Date(xhr.getResponseHeader('Last-Modified'));
      if (mtime.toString() === 'Invalid Date') {
        callback(); // dont want to return a bad date
      } else {
        callback(mtime);
      }
    }
  }
  xhr.send();
};

getMTime('url here', function(mtime) {
  if (mtime) console.log('the mtime is:' + mtime.toISOString());
});

nerv_ 02.05.2014 11:38

Цитата:

Сообщение от Aetae
Только last-modifed и только для своего домена.

спрашивали по url :)
Для тренировки можешь попробовать определить дату создания файла (какого? =) по этому url
Цитата:

Сообщение от Aetae
http://stackoverflow.com/a/5748207

:)

Как определишь, пиши))))

Aetae 02.05.2014 19:23

<img src="/files/tutorial/browser/dom/ball/ball.gif">
<script>function getMTime(url, callback) {
    var xhr = XMLHttpRequest();
    xhr.open('HEAD', url, true);
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            if (xhr.status === 200) {
                callback(xhr.getResponseHeader('Last-Modified'))
            }
        }
    };
    xhr.send();
};
getMTime('/files/tutorial/browser/dom/ball/ball.gif', function (mtime) {
    alert('the mtime is:' + mtime)
})</script>

Нормально всё с файлами работает, или я что-то не понял?

danik.js 02.05.2014 19:38

Uncaught TypeError: Failed to construct 'XMLHttpRequest': Please use the 'new' operator, this DOM object constructor cannot be called as a function.

Aetae 02.05.2014 21:07

danik.js, у меня ff - мне по кочерыжке.)
Кроссбраузерность допиливайте под себя.

P.S. Сам бы без new не написал, но тут просто на скорую руку правил кривоватый пример со stackoverflow.)

danik.js 02.05.2014 21:22

Какой же ты эгоист)
Трудно что-ли три буквы добавить, шоб демка заработала...

nerv_ 02.05.2014 22:05

А я для хрома написал :)
<img src="/files/tutorial/browser/dom/ball/ball.gif" />

<script>
    getModified('/files/tutorial/browser/dom/ball/ball.gif')
        .then(function(date) {
            alert(date);
        },
        function() {
            alert('error');
        });

    // -------------------------------

    function getModified(url) {
        var deferred = {};
        var promise = new Promise(function(resolve, reject) {
            deferred.resolve = resolve;
            deferred.reject = reject;
        });
        var xhr = new XMLHttpRequest();
        xhr.open('HEAD', url);
        xhr.onload = function() {
            var header = xhr.getResponseHeader('Last-Modified');
            var date = new Date(header);
            deferred.resolve(date);
        };
        xhr.onerror = function() {
            deferred.reject();
        };
        xhr.send();
        return promise;
    }
</script>


Цитата:

Сообщение от Aetae
Нормально всё с файлами работает, или я что-то не понял?

Если путь к файлу известен, то работает. Но только это не дата создания)
А если путь к файлу не известен, то тру-ля-ля :)

Aetae 02.05.2014 22:50

Какая гадость эти ваши промисы... =\


Часовой пояс GMT +3, время: 20:16.