文件:lastModified 属性

注意:此功能在 Web Workers 中可用。

lastModifiedFile 接口的只读属性,它提供文件的最后修改日期,表示自 Unix 纪元(1970 年 1 月 1 日午夜)以来的毫秒数。没有已知最后修改日期的文件将返回当前日期。

表示自 Unix 纪元以来的毫秒数。

示例

下面的示例将循环遍历您选择的文件,并打印每个文件是否在过去一年内修改过。

HTML

html
<input type="file" id="filepicker" name="fileList" multiple />
<output id="output"></output>

JavaScript

js
const output = document.getElementById("output");
const filepicker = document.getElementById("filepicker");

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 是动态创建的,则可以在 File() 构造函数中提供最后修改时间。如果缺少,则 lastModified 将继承 File 对象创建时的 Date.now() 的当前时间。

js
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 的倍数,或者在启用 privacy.resistFingerprinting 时是 100(或 privacy.resistFingerprinting.reduceTimerPrecision.microseconds)的倍数。

js
// 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
// …

规范

规范
文件 API
# dfn-lastModified

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅