Skip to content

Commit

Permalink
2023/04/07 時点の英語版に同期
Browse files Browse the repository at this point in the history
  • Loading branch information
mfuji09 committed Jul 28, 2023
1 parent 11a19c1 commit ec318ee
Show file tree
Hide file tree
Showing 5 changed files with 141 additions and 102 deletions.
22 changes: 14 additions & 8 deletions files/ja/web/api/file/file/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
---
title: File()
title: "File: File() コンストラクター"
short-title: File()
slug: Web/API/File/File
l10n:
sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2
---

{{APIRef("File")}}
Expand All @@ -9,27 +12,30 @@ slug: Web/API/File/File

## 構文

```js
new File(bits, name[, options]);
```js-nolint
new File(bits, name)
new File(bits, name, options)
```

### 引数

- `bits`
- : {{jsxref("Array")}}、{{jsxref("ArrayBuffer")}}、{{domxref("ArrayBufferView")}}、{{domxref("Blob")}}、{{domxref("USVString")}} の {{jsxref("Array")}} オブジェクト、またはそれらをあわせたものを {{domxref("File")}} 内に格納します。`USVString` オブジェクトは UTF-8 でエンコードされます。
- : [反復可能](/ja/docs/Web/JavaScript/Reference/Iteration_protocols#反復可能プロトコル)オブジェクト、例えば {{jsxref("Array")}}、{{jsxref("ArrayBuffer")}}、{{jsxref("TypedArray")}}、{{jsxref("DataView")}}、{{domxref("Blob")}}、文字列、またはそのような要素を混合させたものを {{domxref("File")}} 内に格納します。なお、文字列は JavaScript の UTF-16 文字列ではなく、UTF-8 でエンコードされます。
- `name`
- : {{domxref("USVString")}} で、ファイル名またはファイルへのパスを表します。
- : 文字列で、ファイル名またはファイルへのパスを表します。
- `options` {{optional_inline}}

- : ファイルのオプション属性を含むオプションオブジェクト。利用可能なオプションは以下の通りです。

- `type`: ファイルの中に入るコンテンツの MIME タイプを表す {{domxref("DOMString")}} です。既定値は `""` です。
- `lastModified`: UNIX 元期からのミリ秒単位で、ファイルが最後に更新された時刻を表す数値です。既定値は {{jsxref("Date.now()")}} です。
- `type`
- : ファイルの中に入るコンテンツの MIME タイプを表す文字列です。既定値は `""` です。
- `lastModified`
- : UNIX 元期からのミリ秒単位で、ファイルが最後に更新された時刻を表す数値です。既定値は {{jsxref("Date.now()")}} です。

##

```js
var file = new File(["foo"], "foo.txt", {
const file = new File(["foo"], "foo.txt", {
type: "text/plain",
});
```
Expand Down
66 changes: 41 additions & 25 deletions files/ja/web/api/file/lastmodified/index.md
Original file line number Diff line number Diff line change
@@ -1,59 +1,75 @@
---
title: File.lastModified
title: "File: lastModified プロパティ"
short-title: lastModified
slug: Web/API/File/lastModified
l10n:
sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2
---

{{APIRef("File")}}

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

## 構文
##

```js
const time = instanceOfFile.lastModified;
```

###

UNIX 元気からのミリ秒数を表す数値です。
UNIX 元期からのミリ秒数を表す数値です。

##

### file 入力欄からの読み込み
下記の例では、選んだファイルをループして、それぞれのファイルが過去 1 年以内に変更されたかどうかを出力します。

### HTML

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

```css hidden
output {
display: block;
white-space: pre-wrap;
}
```

### JavaScript

```js
const fileInput = document.querySelector('#fileInput');
fileInput.addEventListener('change', (event) => {
// filesはFileList型オブジェクト (NodeListと似ている)
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 (let file of files) {
for (const file of files) {
const date = new Date(file.lastModified);
console.log(`${file.name} has a last modified date of ${date}`);
// ファイルが 1 年以上変更されていなければtrue
const stale = now.getTime() - file.lastModified > 31_536_000_000;
output.textContent += `${file.name} is ${
stale ? "stale" : "fresh"
} (${date}).\n`;
}
});
```

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

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

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

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

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

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

## 時間の精度の低下
Expand All @@ -67,14 +83,14 @@ someFile.lastModified;
// 1519211809934
// 1519211810362
// 1519211811670
// ...
//

// `privacy.resistFingerprinting` が有効な場合の時間の制度の低下
someFile.lastModified;
// 1519129853500
// 1519129858900
// 1519129864400
// ...
//
```

Firefox では、`privacy.resistFingerprinting` を有効にすることもできます。精度は 100ms か `privacy.resistFingerprinting.reduceTimerPrecision.microseconds` のいずれか大きい方の値になります。
Expand Down
52 changes: 26 additions & 26 deletions files/ja/web/api/file/name/index.md
Original file line number Diff line number Diff line change
@@ -1,52 +1,52 @@
---
title: File.name
title: "File: name プロパティ"
short-title: name
slug: Web/API/File/name
l10n:
sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2
---

{{APIRef("File API")}}

{{domxref("File")}} オブジェクトによって表されるファイルの名前を返します。セキュリティ上の理由から、パスはこのプロパティから除外されます。

## 構文

```js
var name = file.name;
```

##

パスを除いたファイル名の入った文字列。 "My Resume.rtf" など。

##

```html
<input type="file" multiple onchange="processSelectedFiles(this)">
### HTML

<div id="output"></div>
```html
<input type="file" id="filepicker" multiple />
<div>
<p>選択されたファイルのリスト:</p>
<ul id="output"></ul>
</div>
```

### JavaScript

```js
const output = document.querySelector("#output");
function processSelectedFiles(fileInput) {
let files = fileInput.files;
output.textContent = "選択されたファイルのリスト:";
const output = document.getElementById("output");
const filepicker = document.getElementById("filepicker");

for (let i = 0; i < files.length; i++) {
output.textContent += `\nファイル名: ${files[i].name}`;
}
}
```
filepicker.addEventListener("change", (event) => {
const files = event.target.files;
output.textContent = "";

```css hidden
#output{
padding: 0.5em 0;
white-space: pre;
}
for (const file of files) {
const li = document.createElement("li");
li.textContent = file.name;
output.appendChild(li);
}
});
```

#### 結果
### 結果

{{ EmbedLiveSample('Example', 300, 100) }}
{{EmbedLiveSample('Examples')}}

## 仕様書

Expand Down
45 changes: 30 additions & 15 deletions files/ja/web/api/file/type/index.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,55 @@
---
title: File.type
title: "File: type プロパティ"
short-title: type
slug: Web/API/File/type
l10n:
sourceCommit: 339595951b78774e951b1a9d215a6db6b856f6b2
---

{{APIRef("File API")}}

{{domxref("File")}} オブジェクトによって表されるファイルのメディアタイプ ([MIME](/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types)) を返します。

## 構文

```js
var name = file.type;
```

##

ファイルのタイプを示すメディアタイプ (MIME) を含む文字列。たとえば、 PNG 画像の場合は "image/png" です。

##

### HTML

```html
<input type="file" multiple onchange="showType(this)">
<input type="file" id="filepicker" name="fileList" multiple />
<output id="output"></output>
```

```css hidden
output {
display: block;
white-space: pre-wrap;
}
```

### JavaScript

```js
function showType(fileInput) {
var files = fileInput.files;
const output = document.getElementById("output");
const filepicker = document.getElementById("filepicker");

filepicker.addEventListener("change", (event) => {
const files = event.target.files;
output.textContent = "";

for (var i = 0; i < files.length; i++) {
var name = files[i].name;
var type = files[i].type;
alert("Filename: " + name + " , Type: " + type);
for (const file of files) {
output.textContent += `${file.name}: ${file.type || "unknown"}\n`;
}
}
});
```

### 結果

{{EmbedLiveSample('Examples')}}

> **メモ:** 現在の実装に基づくと、ブラウザーは実際にファイルのバイトストリームを読み取ってメディアタイプを判断している訳ではありません。ファイルの拡張子に基づいて推測します。 PNG 画像ファイルを .txt に改名すると "_text/plain_" となり、"_image/png_" とはなりません。さらに `file.type` は一般的に、画像、 HTML 文書、音声、動画などの一般的なファイルタイプに対してのみ信頼できます。一般的ではないファイルの拡張子に対しては、空の文字列を返します。クライアントの構成 (Windows レジストリーなど) によっては、一般的なタイプの場合でも予期しない値が発生することがあります。**開発者は、このプロパティを唯一の検証方法として信頼しないことをお勧めします。**
## 仕様書
Expand Down
Loading

0 comments on commit ec318ee

Please sign in to comment.