Skip to content

Commit

Permalink
[zh-cn]: sync translation for File API (mdn#23412)
Browse files Browse the repository at this point in the history
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Hoarfroster <[email protected]>
Co-authored-by: Jason Ren <[email protected]>
  • Loading branch information
4 people authored and sora32127 committed Oct 6, 2024
1 parent 6ffb915 commit 1e0e14a
Show file tree
Hide file tree
Showing 19 changed files with 88 additions and 47 deletions.
36 changes: 36 additions & 0 deletions files/zh-cn/web/api/blob/bytes/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
title: Blob:bytes() 方法
slug: Web/API/Blob/bytes
l10n:
sourceCommit: 5ee9d033cacad3a031562be16be43c55a838cc4f
---

{{APIRef("File API")}}{{AvailableInWorkers}}

{{domxref("Blob")}} 接口的 **`bytes()`** 方法返回一个 {{jsxref("Promise")}},该 {{jsxref("Promise")}} 兑现为一个包含 blob 内容的字节数组的 {{jsxref("Uint8Array")}}。

## 语法

```js-nolint
bytes()
```

### 参数

无。

### 返回值

一个兑现包含 blob 数据的 {{jsxref("Uint8Array")}} 对象的 {{jsxref("Promise")}}。

### 异常

例如,如果用于获取 Blob 数据的读取器抛出异常,则该方法将拒绝返回的 {{jsxref("Promise")}}。

## 规范

{{Specifications}}

## 浏览器兼容性

{{Compat}}
4 changes: 3 additions & 1 deletion files/zh-cn/web/api/blob/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Blob
slug: Web/API/Blob
l10n:
sourceCommit: 367b982b93c07f7f99e7bb768a6bf326fa5198e6
sourceCommit: de2ef1e9950eebbacdd55f072dfe03014d113bbd
---

{{APIRef("File API")}}{{AvailableInWorkers}}
Expand Down Expand Up @@ -33,6 +33,8 @@ Blob 表示的不一定是 JavaScript 原生格式的数据。{{DOMxRef("File")}

- {{DOMxRef("Blob.arrayBuffer()")}}
- : 返回一个 promise,其会兑现一个包含 `Blob` 所有内容的二进制格式的 {{jsxref("ArrayBuffer")}}。
- {{DOMxRef("Blob.bytes()")}}
- : 返回一个 promise,其会兑现一个包含 `Blob` 内容的 {{jsxref("Uint8Array")}}。
- {{DOMxRef("Blob.slice()")}}
- : 返回一个新的 `Blob` 对象,其中包含调用它的 blob 的指定字节范围内的数据。
- {{DOMxRef("Blob.stream()")}}
Expand Down
2 changes: 1 addition & 1 deletion files/zh-cn/web/api/blob/type/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Blob:type 属性
slug: Web/API/Blob/type
l10n:
sourceCommit: 84a9afd94f497d4173bde131731ef6bdf0b6135d
sourceCommit: be8f7f155a48e11b30c240f8731afb1845f85378
---

{{APIRef("File API")}}{{AvailableInWorkers}}
Expand Down
4 changes: 2 additions & 2 deletions files/zh-cn/web/api/file/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: File
slug: Web/API/File
l10n:
sourceCommit: 467508d83e320be0680f334c3455d3cc232bce42
sourceCommit: 58ad1df59f2ffb9ecab4e27fe1bdf1eb5a55f89b
---

{{APIRef("File API")}}{{AvailableInWorkers}}
Expand All @@ -11,7 +11,7 @@ l10n:

`File` 对象通常从用户使用 {{HTMLElement("input")}} 元素选择文件返回的 {{DOMxRef("FileList")}} 对象中检索,或者从拖放操作返回的 {{DOMxRef("DataTransfer")}} 对象中检索。

`File` 对象是一种特定类型的 {{DOMxRef("Blob")}},并且可以在 Blob 可以使用的任何上下文中使用。特别是,{{DOMxRef("FileReader")}}、{{DOMxRef("URL.createObjectURL_static", "URL.createObjectURL()")}}、{{DOMxRef("createImageBitmap()")}}、{{domxref("fetch()")}} 方法的 [`body`](/zh-CN/docs/Web/API/fetch#body) 选项和 {{DOMxRef("XMLHttpRequest", "", "send( )")}} 都可以接收 `Blob` 对象和 `File` 对象。
`File` 对象是一种特定类型的 {{DOMxRef("Blob")}},并且可以在 Blob 可以使用的任何上下文中使用。特别是,{{DOMxRef("FileReader")}}、{{DOMxRef("URL.createObjectURL_static", "URL.createObjectURL()")}}、{{DOMxRef("createImageBitmap()")}}、{{domxref("Window/fetch", "fetch()")}} 方法的 [`body`](/zh-CN/docs/Web/API/RequestInit#body) 选项和 {{DOMxRef("XMLHttpRequest.send()")}} 都可以接收 `Blob` 对象和 `File` 对象。

参见[在 Web 应用程序使用文件](/zh-CN/docs/Web/API/File_API/Using_files_from_web_applications)了解更多信息和例子。

Expand Down
12 changes: 6 additions & 6 deletions files/zh-cn/web/api/file/lastmodified/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: File:lastModified 属性
slug: Web/API/File/lastModified
l10n:
sourceCommit: 8fd2ee72038310e3ecc387df235ffac1cb08775c
sourceCommit: 73b2b6ee411ac094b9fc57dafac6f9c232fc20d9
---

{{APIRef("File API")}}{{AvailableInWorkers}}
Expand Down Expand Up @@ -59,7 +59,7 @@ filepicker.addEventListener("change", (event) => {

### 动态创建文件

如果文件是动态创建的,可以在 {{domxref("File.File()", "new File()")}} 构造函数中提供最后修改时间。如果未提供则会继承文件对象被创建时的 {{jsxref("Date.now()")}}。
如果文件是动态创建的,可以在 {{domxref("File.File()", "File()")}} 构造函数中提供最后修改时间。如果未提供该参数,`lastModified` 将会继承文件对象被创建时的时间(来自 {{jsxref("Date.now()")}}

```js
const fileWithDate = new File([], "file.bin", {
Expand All @@ -73,28 +73,28 @@ console.log(fileWithoutDate.lastModified); // 返回当前时间

## 时间精度降低

为了防止计时攻击和{{glossary("fingerprinting", "指纹识别")}}`someFile.lastModifiedDate.getTime()` 的精度可能会根据浏览器设置进行舍入。
为了防止计时攻击和[指纹识别](/zh-CN/docs/Glossary/Fingerprinting)`someFile.lastModified` 的精度可能会根据浏览器设置进行舍入。在 Firefox 中,`privacy.reduceTimerPrecision` 首选项默认启用,默认为 2ms。你还可以启用 `privacy.resistFingerprinting`,在这种情况下精度将为 100ms 或 `privacy.resistFingerprinting.reduceTimerPrecision.microseconds` 的值,以较大者为准

在 Firefox 中,`privacy.reduceTimerPrecision` 首选项默认启用,在 Firefox 59 中默认为 20 微秒;Firefox 60 中为 2 毫秒
例如,在降低时间精度的情况下,`someFile.lastModified` 的结果将始终是 2 的倍数,或者在启用 `privacy.resistFingerprinting` 的情况下为 100 的倍数(或 `privacy.resistFingerprinting.reduceTimerPrecision.microseconds`

```js
// Firefox 60 中的时间精度降低(2 毫秒)
someFile.lastModifiedDate.getTime();
// 可能是:
// 1519211809934
// 1519211810362
// 1519211811670
//

// 启用 `privacy.resistFingerprinting` 会降低时间精度
someFile.lastModifiedDate.getTime();
// 可能是:
// 1519129853500
// 1519129858900
// 1519129864400
//
```

在 Firefox 中,你还可以启用 `privacy.resistFingerprinting`,精度将为 100 毫秒 或 `privacy.resistFingerprinting.reduceTimerPrecision.microseconds` 的值,以较大者为准。

## 规范

{{Specifications}}
Expand Down
10 changes: 5 additions & 5 deletions files/zh-cn/web/api/file/lastmodifieddate/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: File:lastModifiedDate 属性
slug: Web/API/File/lastModifiedDate
l10n:
sourceCommit: 367b982b93c07f7f99e7bb768a6bf326fa5198e6
sourceCommit: 3b5a1c0dfd59257c0a51052a9efa7b0108f8ecca
---

{{APIRef("File API")}}{{AvailableInWorkers}}{{Deprecated_Header}}{{Non-standard_Header}}
Expand All @@ -26,28 +26,28 @@ for (const file of fileInput.files) {

## 时间精度降低

为了防止计时攻击和{{glossary("fingerprinting", "指纹识别")}}`someFile.lastModifiedDate.getTime()` 的精度可能会根据浏览器设置进行舍入。
为了防止计时攻击和[指纹识别](/zh-CN/docs/Glossary/Fingerprinting)`someFile.lastModifiedDate` 的精度可能会根据浏览器设置进行舍入。在 Firefox 中,`privacy.reduceTimerPrecision` 首选项默认启用,默认为 2ms。你还可以启用 `privacy.resistFingerprinting`,在这种情况下精度将为 100ms 或 `privacy.resistFingerprinting.reduceTimerPrecision.microseconds` 的值,以较大者为准

在 Firefox 中,`privacy.reduceTimerPrecision` 首选项默认启用,在 Firefox 59 中默认为 20 微秒;Firefox 60 中为 2 毫秒
例如,在降低时间精度的情况下,`someFile.lastModifiedDate.getTime()` 的结果将始终是 2 的倍数,或者在启用 `privacy.resistFingerprinting` 的情况下为 100 的倍数(或 `privacy.resistFingerprinting.reduceTimerPrecision.microseconds`

```js
// Firefox 60 中的时间精度降低(2 毫秒)
someFile.lastModifiedDate.getTime();
// 可能是:
// 1519211809934
// 1519211810362
// 1519211811670
//

// 启用 `privacy.resistFingerprinting` 会降低时间精度
someFile.lastModifiedDate.getTime();
// 可能是:
// 1519129853500
// 1519129858900
// 1519129864400
//
```

在 Firefox 中,你还可以启用 `privacy.resistFingerprinting`,精度将为 100 毫秒或 `privacy.resistFingerprinting.reduceTimerPrecision.microseconds` 的值,以较大者为准。

## 规范

_尽管存在于文件 API 规范的早期草案中,但此属性已从中删除,并且此属性现在是非标准的。使用 {{domxref("File.lastModified")}} 代替。_
Expand Down
5 changes: 3 additions & 2 deletions files/zh-cn/web/api/file_api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: 文件 API
slug: Web/API/File_API
l10n:
sourceCommit: 497d322c61511b11e4877a77660f8d7b394a8277
sourceCommit: 73b2b6ee411ac094b9fc57dafac6f9c232fc20d9
---

{{DefaultAPISidebar("File API")}}{{AvailableInWorkers}}
Expand Down Expand Up @@ -78,7 +78,7 @@ fileInput.addEventListener("change", () => {
});
```

### 运行结果
### 结果

{{EmbedLiveSample("读取文件", "", "300")}}

Expand All @@ -89,4 +89,5 @@ fileInput.addEventListener("change", () => {
## 参见

- [`<input type="file">`](/zh-CN/docs/Web/HTML/Element/input/file):文件 input 元素
- {{domxref("Blob.text()")}}
- {{domxref("DataTransfer")}} 接口
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: 在 web 应用程序中使用文件
slug: Web/API/File_API/Using_files_from_web_applications
l10n:
sourceCommit: 94ef07a7b073c2663cbace0667bdb717a40bfa28
sourceCommit: 88467d31d2ad7bdfade8b38ec69f6702fee080d1
---

{{DefaultAPISidebar("File API")}}{{AvailableInWorkers}}
Expand Down Expand Up @@ -335,16 +335,17 @@ fileSelect.addEventListener(
fileElem.addEventListener("change", handleFiles, false);

function handleFiles() {
fileList.textContent = "";
if (!this.files.length) {
fileList.innerHTML = "<p>没有选择任何文件!</p>";
const p = document.createElement("p");
p.textContent = "没有选择任何文件!";
fileList.appendChild(p);
} else {
fileList.innerHTML = "";
const list = document.createElement("ul");
fileList.appendChild(list);
for (let i = 0; i < this.files.length; i++) {
const li = document.createElement("li");
list.appendChild(li);

const img = document.createElement("img");
img.src = URL.createObjectURL(this.files[i]);
img.height = 60;
Expand All @@ -353,7 +354,7 @@ function handleFiles() {
};
li.appendChild(img);
const info = document.createElement("span");
info.innerHTML = `${this.files[i].name}: ${this.files[i].size} bytes`;
info.textContent = `${this.files[i].name}${this.files[i].size} 字节`;
li.appendChild(info);
}
}
Expand Down Expand Up @@ -400,7 +401,7 @@ function sendFiles() {
}
```

第 2 行获取了文档中所有 CSS 类为 `obj` 的元素的 {{DOMxRef("NodeList")}},命名为 `imgs`。在我们的例子中,这些是包含所有图像缩略图的列表。有了这个列表,遍历并为每一项创建一个新的 `FileUpload` 实例就很简单了。每个实例都可以处理相应文件的上传。
`document.querySelectorAll` 获取了文档中所有 CSS 类为 `obj` 的元素的 {{DOMxRef("NodeList")}},命名为 `imgs`。在我们的例子中,这些是包含所有图像缩略图的列表。有了这个列表,遍历并为每一项创建一个新的 `FileUpload` 实例就很简单了。每个实例都可以处理相应文件的上传。

### 处理文件的上传过程

Expand Down Expand Up @@ -486,14 +487,14 @@ function createThrobber(img) {

这个例子演示了如何异步上传文件,在服务器端使用了 PHP,在客户端使用了 JavaScript。

```js
```php
<?php
if (isset($_FILES['myFile'])) {
// Example:
// 示例:
move_uploaded_file($_FILES['myFile']['tmp_name'], "uploads/" . $_FILES['myFile']['name']);
exit;
}
?><!DOCTYPE html>
?><!doctype html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
Expand Down Expand Up @@ -544,7 +545,7 @@ if (isset($_FILES['myFile'])) {

对象 URL 可以用于图像之外的其他东西!它可以用于显示嵌入的 PDF 文件或任何其他浏览器能显示的资源。

在 Firefox 中,要让 PDF 嵌入式地显示在 iframe 中(而不是作为下载的文件弹出),必须将 `pdfjs.disabled` 设为 `false` {{non-standard_inline()}}.
在 Firefox 中,要让 PDF 嵌入式地显示在 iframe 中(而不是作为下载的文件弹出),必须将 `pdfjs.disabled` 设为 `false`

```html
<iframe id="viewer"></iframe>
Expand Down
7 changes: 4 additions & 3 deletions files/zh-cn/web/api/filelist/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: FileList
slug: Web/API/FileList
l10n:
sourceCommit: 8fd2ee72038310e3ecc387df235ffac1cb08775c
sourceCommit: cfa628aedb53a83b315943ef19fa6c73298fb7d5
---

{{APIRef("File API")}}{{AvailableInWorkers}}
Expand All @@ -21,8 +21,9 @@ l10n:
const file = document.getElementById("fileItem").files[0];
```

> [!NOTE]
> 此接口的出现是[对创建不可修改列表的一次尝试](https://stackoverflow.com/questions/74630989/why-use-domstringlist-rather-than-an-array/74641156#74641156),并且仅是出于避免破坏已经在使用它的代码而继续受到支持。现代 API 使用围绕 ECMAScript 数组类型的类型,因此你可以像 ECMAScript 数组一样对待它们,同时对其使用施加额外的语义(例如使其项目只读)。
此接口[试图创建不可修改的列表](https://stackoverflow.com/questions/74630989/why-use-domstringlist-rather-than-an-array/74641156#74641156),为了不破坏已经使用该接口的代码,才继续支持该接口。现代 API 使用基于 JavaScript [数组](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array)的类型来表示列表结构,从而提供许多数组方法,同时对其使用施加额外的语义(例如使其项目为只读)。

这些历史原因并不意味着你作为开发人员应该避免使用 `FileList`。你不会自己创建 `FileList` 对象,而是从诸如 {{domxref("HTMLInputElement.files")}} 之类的 API 获取它们,并且这些 API 并未弃用。但是,请注意与真实数组的语义差异。

## 实例属性

Expand Down
4 changes: 2 additions & 2 deletions files/zh-cn/web/api/filereader/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: FileReader
slug: Web/API/FileReader
l10n:
sourceCommit: c2f4a396c85a8f875b592913279e6f116072f622
sourceCommit: 58ad1df59f2ffb9ecab4e27fe1bdf1eb5a55f89b
---

{{APIRef("File API")}}{{AvailableInWorkers}}
Expand All @@ -11,7 +11,7 @@ l10n:

文件对象可以从用户使用 {{HTMLElement("input")}} 元素选择文件而返回的 {{domxref("FileList")}} 对象中获取,或者从拖放操作的 {{ domxref("DataTransfer")}} 对象中获取。

`FileReader` 只能访问用户明确选择的文件内容,无论是使用 HTML `<input type="file">` 元素还是通过拖放。它不能用于从用户的文件系统中按路径名读取文件。要按路径名读取客户端文件系统上的文件,请使用[文件系统访问 API](/zh-CN/docs/Web/API/File_System_API)。要读取服务器端文件,请使用 {{domxref("fetch()")}},如果跨源读取,则需要 [CORS](/zh-CN/docs/Web/HTTP/CORS) 权限。
`FileReader` 只能访问用户明确选择的文件内容,无论是使用 HTML `<input type="file">` 元素还是通过拖放。它不能用于从用户的文件系统中按路径名读取文件。要按路径名读取客户端文件系统上的文件,请使用[文件系统访问 API](/zh-CN/docs/Web/API/File_System_API)。要读取服务器端文件,请使用 {{domxref("Window/fetch", "fetch()")}},如果跨源读取,则需要 [CORS](/zh-CN/docs/Web/HTTP/CORS) 权限。

{{InheritanceDiagram}}

Expand Down
2 changes: 1 addition & 1 deletion files/zh-cn/web/api/filereader/readasarraybuffer/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: FileReader:readAsArrayBuffer() 方法
slug: Web/API/FileReader/readAsArrayBuffer
l10n:
sourceCommit: e43bfd9b4a6c363a4ba7ef6ffa64c09b38fd111b
sourceCommit: d8f04d843dd81ab8cea1cfc0577ae3c5c9b77d5c
---

{{APIRef("File API")}}{{AvailableInWorkers}}
Expand Down
2 changes: 1 addition & 1 deletion files/zh-cn/web/api/filereader/readasbinarystring/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: FileReader:readAsBinaryString() 方法
slug: Web/API/FileReader/readAsBinaryString
l10n:
sourceCommit: e43bfd9b4a6c363a4ba7ef6ffa64c09b38fd111b
sourceCommit: d8f04d843dd81ab8cea1cfc0577ae3c5c9b77d5c
---

{{APIRef("File API")}}{{AvailableInWorkers}}{{Deprecated_Header}}
Expand Down
2 changes: 1 addition & 1 deletion files/zh-cn/web/api/filereader/readasdataurl/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: FileReader:readAsDataURL() 方法
slug: Web/API/FileReader/readAsDataURL
l10n:
sourceCommit: e43bfd9b4a6c363a4ba7ef6ffa64c09b38fd111b
sourceCommit: 6b730e3cfdf0f51940b44efa71bd59c84ce76e71
---

{{APIRef("File API")}}{{AvailableInWorkers}}
Expand Down
4 changes: 2 additions & 2 deletions files/zh-cn/web/api/filereader/readastext/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
title: FileReader:readAsText() 方法
slug: Web/API/FileReader/readAsText
l10n:
sourceCommit: e43bfd9b4a6c363a4ba7ef6ffa64c09b38fd111b
sourceCommit: d8f04d843dd81ab8cea1cfc0577ae3c5c9b77d5c
---

{{APIRef("File API")}}
{{APIRef("File API")}}{{AvailableInWorkers}}

{{domxref("FileReader")}} 接口的 **`readAsText()`** 方法用于读取指定的 {{domxref("Blob")}} 或 {{domxref("File")}} 对象的内容。当读操作完成时,{{domxref("FileReader.readyState","readyState")}} 属性更改为 `DONE`,并触发 {{domxref("FileReader/loadend_event", "loadend")}} 事件,并且 {{domxref("FileReader.result","result")}} 属性包含表示文件内容的文本字符串。

Expand Down
10 changes: 5 additions & 5 deletions files/zh-cn/web/api/filereader/readystate/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: FileReader:readyState 属性
slug: Web/API/FileReader/readyState
l10n:
sourceCommit: 541c4d10b9a1fb1c3400087f2514cd7358f4298f
sourceCommit: e932acf254c5dd06e26798b9d8fe01ce8dab1fb7
---

{{APIRef("File API")}}{{AvailableInWorkers}}
Expand All @@ -11,13 +11,13 @@ l10n:

##

一个数值,是 {{domxref("FileReader")}} API 定义的三个可能状态的常量之一。
一个数字,它是 {{domxref("FileReader")}} 接口上定义的三个可能的状态常量之一:

- `FileReader.EMPTY`
- `FileReader.EMPTY`(0)
- : Reader 已创建,但尚未调用任何读取方法。
- `FileReader.LOADING`
- `FileReader.LOADING`(1)
- : 已调用读取方法。正在读取 {{domxref("File")}} 或 {{domxref("Blob")}},尚未发生错误。
- `FileReader.DONE`
- `FileReader.DONE`(2)
- : 读取操作完成。这可能意味着:整个 {{domxref("File")}} 或 {{domxref("Blob")}} 已读入内存,发生文件读取错误,或 {{domxref("FileReader.abort()", "abort()")}} 被调用并且读取被取消。

## 示例
Expand Down
2 changes: 1 addition & 1 deletion files/zh-cn/web/api/filereadersync/filereadersync/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: FileReaderSync:FileReaderSync() 构造函数
slug: Web/API/FileReaderSync/FileReaderSync
l10n:
sourceCommit: 1dad49fff047729e8dcca313a45ccb4cc2d2526f
sourceCommit: d8f04d843dd81ab8cea1cfc0577ae3c5c9b77d5c
---

{{APIRef("File API")}} {{AvailableInWorkers("worker_except_service")}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: FileReaderSync:readAsBinaryString() 方法
slug: Web/API/FileReaderSync/readAsBinaryString
l10n:
sourceCommit: 502e8c3f0be95c6f42afe6a72113b029b290b9e8
sourceCommit: d8f04d843dd81ab8cea1cfc0577ae3c5c9b77d5c
---

{{APIRef("File API")}}{{deprecated_header}} {{AvailableInWorkers("worker_except_service")}}
Expand Down
Loading

0 comments on commit 1e0e14a

Please sign in to comment.