Spec-Zone.ru › Web APIs

Файл: свойство lastModified

Базовая версия Широко доступна

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Веб-воркерах.

Свойство lastModified только для чтения интерфейса File предоставляет дату последнего изменения файла в виде количества миллисекунд с начала эпохи Unix (1 января 1970 года в полночь). Для файлов без известной даты последнего изменения возвращается текущая дата.

Значение

Число, представляющее количество миллисекунд с начала эпохи Unix.

Примеры

В примере ниже происходит перебор выбранных файлов и вывод информации о том, был ли каждый файл изменен в течение последнего года.

HTML

<input type="file" id="file-picker" name="fileList" multiple />
<output id="output"></output>

JavaScript

const output = document.getElementById("output");
const filePicker = document.getElementById("file-picker");

filePicker.addEventListener("change", (event) => {
  const files = event.target.files;
  const now = new Date();
  output.textContent = "";

  for (const file of files) {
    const date = new Date(file.lastModified);
    // true if the file hasn't been modified for more than 1 year
    const stale = now.getTime() - file.lastModified > 31_536_000_000;
    output.textContent += `${file.name} is ${
      stale ? "stale" : "fresh"
    } (${date}).\n`;
  }
});

Результат

Динамически созданные файлы

Если файл создаётся динамически, время последнего изменения можно указать в конструкторе File(). Если его нет, lastModified наследует текущее время от Date.now() в момент создания объекта File.

const fileWithDate = new File([], "file.bin", {
  lastModified: new Date(2017, 1, 1),
});
console.log(fileWithDate.lastModified); // returns 1485903600000

const fileWithoutDate = new File([], "file.bin");
console.log(fileWithoutDate.lastModified); // returns current time

Уменьшенная точность времени

Для защиты от атак на основе тайминга и от отпечатков, точность someFile.lastModified может быть округлена в зависимости от настроек браузера. В Firefox, настройка privacy.reduceTimerPrecision включена по умолчанию и имеет значение 2 мс. Также можно включить privacy.resistFingerprinting, в этом случае точность будет 100 мс или значение privacy.resistFingerprinting.reduceTimerPrecision.microseconds, что больше.

Например, с уменьшенной точностью времени результат someFile.lastModified всегда будет кратен 2 или кратен 100 (или privacy.resistFingerprinting.reduceTimerPrecision.microseconds) с включённым privacy.resistFingerprinting.

// reduced time precision (2ms) in Firefox 60
someFile.lastModified;
// Might be:
// 1519211809934
// 1519211810362
// 1519211811670
// …

// reduced time precision with `privacy.resistFingerprinting` enabled
someFile.lastModified;
// Might be:
// 1519129853500
// 1519129858900
// 1519129864400
// …

Спецификации

Спецификация
File API
# dfn-lastModified

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
lastModified 13 18 15 ≤15 10 18 15 ≤14 10 1.0 ≤37

См. также

  • File

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/File/lastModified

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API