From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/ja/web/api/file/lastmodified/index.html | 112 ++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 files/ja/web/api/file/lastmodified/index.html (limited to 'files/ja/web/api/file/lastmodified/index.html') diff --git a/files/ja/web/api/file/lastmodified/index.html b/files/ja/web/api/file/lastmodified/index.html new file mode 100644 index 0000000000..5ffcc10a2a --- /dev/null +++ b/files/ja/web/api/file/lastmodified/index.html @@ -0,0 +1,112 @@ +--- +title: File.lastModified +slug: Web/API/File/lastModified +tags: + - API + - File API + - ファイル + - プロパティ + - リファレンス +translation_of: Web/API/File/lastModified +--- +
{{APIRef("File")}}
+ +

File.lastModified 読み取り専用プロパティは、ファイルの最終更新日時を UNIX エポック (1970 年 1 月 1 日の深夜 0 時) からのミリ秒数で返します。最終更新日時がわからないファイルは、現在の日時を返します。

+ +

構文

+ +
var time = instanceOfFile.lastModified;
+
+ +

+ +

UNIX エポックからのミリ秒数を表す数値。

+ +

+ +

file 入力欄からの読み込み

+ +
<input type="file" multiple id="fileInput">
+
+ +
const fileInput = document.querySelector('#fileInput');
+fileInput.addEventListener('change', (event) => {
+  // filesはFileList型オブジェクト (NodeListと似ている)
+  const files = event.target.files;
+
+  for (let file of files) {
+    const date = new Date(file.lastModified);
+    console.log(`${file.name} has a last modified date of ${date}`);
+  }
+});
+ +

以下の結果を試してみてください。

+ +

{{ EmbedLiveSample('Reading_from_file_input', 300, 50) }}

+ +

動的に生成されるファイル

+ +

ファイルが動的に生成された場合、最終更新日時は {{domxref("File.File()", "new File()")}} コンストラクター関数で指定できます。ファイルが見つからない場合、 lastModifiedFile オブジェクトの作成時に {{jsxref("Date.now()")}} から現在の時刻を継承します。

+ +
var fileWithDate = new File([], 'file.bin', {
+  lastModified: new Date(2017, 1, 1),
+});
+console.log(fileWithDate.lastModified); //returns 1485903600000
+
+var fileWithoutDate = new File([], 'file.bin');
+console.log(fileWithoutDate.lastModified); //returns current time
+
+ +

時間の精度の低下

+ +

タイミング攻撃やフィンガープリンティングに対する保護機能を提供するために、someFile.lastModified の精度はブラウザーの設定に応じて丸められることがあります。
+ Firefox では、privacy.reduceTimerPrecision 設定は既定で有効になっており、 Firefox 59 では既定で 20 us に設定されています。60 で 2 ms になります。

+ +
// reduced time precision (2ms) in Firefox 60
+someFile.lastModified;
+// 1519211809934
+// 1519211810362
+// 1519211811670
+// ...
+
+
+// reduced time precision with `privacy.resistFingerprinting` enabled
+someFile.lastModified;
+// 1519129853500
+// 1519129858900
+// 1519129864400
+// ...
+
+ +

Firefox では、privacy.resistFingerprinting を有効にすることもできます。精度は 100 ms か privacy.resistFingerprinting.reduceTimerPrecision.microseconds のいずれか大きい方の値になります。

+ +

仕様書

+ + + + + + + + + + + + + + + + +
仕様書状態備考
{{SpecName('File API', '#file-attrs', 'lastModified')}}{{Spec2('File API')}}初回定義
+ +

ブラウザーの対応

+ + + +

{{Compat("api.File.lastModified")}}

+ +

関連情報

+ + -- cgit v1.2.3-54-g00ecf