Файл: свойство 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 |
См. также
© 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