LastModified-Eigenschaft der Datei
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die lastModified
schreibgeschützte Eigenschaft der File
-Schnittstelle gibt das Datum der letzten Änderung der Datei als Anzahl von Millisekunden seit dem Unix-Epoch (1. Januar 1970 um Mitternacht) an. Dateien ohne bekanntes Änderungsdatum geben das aktuelle Datum zurück.
Wert
Eine Zahl, die die Anzahl der Millisekunden seit dem Unix-Epoch darstellt.
Beispiele
Das folgende Beispiel wird durch die von Ihnen ausgewählten Dateien iterieren und anzeigen, ob jede Datei innerhalb des letzten Jahres geändert wurde.
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`;
}
});
Ergebnis
Dynamisch erstellte Dateien
Wenn eine Datei dynamisch erstellt wird, kann die Zeit der letzten Änderung in der File()
-Konstruktorfunktion übergeben werden. Wenn sie fehlt, erbt lastModified
die aktuelle Zeit von Date.now()
im Moment der Erstellung des File
-Objekts.
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
Reduzierte Zeitpräzision
Zum Schutz vor Timing-Angriffen und Fingerprinting kann die Präzision von someFile.lastModified
je nach Browsereinstellungen gerundet werden. In Firefox ist die Voreinstellung privacy.reduceTimerPrecision
standardmäßig aktiviert und auf 2ms gesetzt. Sie können auch privacy.resistFingerprinting
aktivieren, in diesem Fall beträgt die Präzision 100ms oder den Wert von privacy.resistFingerprinting.reduceTimerPrecision.microseconds
, je nachdem, welcher größer ist.
Zum Beispiel wird mit reduzierter Zeitpräzision das Ergebnis von someFile.lastModified
immer ein Vielfaches von 2 oder ein Vielfaches von 100 (oder privacy.resistFingerprinting.reduceTimerPrecision.microseconds
) sein, wenn privacy.resistFingerprinting
aktiviert ist.
// 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
// …
Spezifikationen
Specification |
---|
File API # dfn-lastModified |
Browser-Kompatibilität
BCD tables only load in the browser