You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 4-binary/04-file/article.md
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# File и FileReader
2
2
3
-
Объект [File](https://www.w3.org/TR/FileAPI/#dfn-file) наследуется от объекта `Blob`, но также дополняется способностью взаимодействовать с файловой системой.
3
+
Объект [File](https://www.w3.org/TR/FileAPI/#dfn-file) наследуется от объекта `Blob` и возможностями по взаимодействию с файловой системой..
4
4
5
5
Есть два способа его получить.
6
6
@@ -13,7 +13,7 @@ new File(fileParts, fileName, [options])
13
13
-**`fileParts`** -- массив значений Blob/BufferSource/String, такой же как `Blob`.
14
14
-**`fileName`** -- строка имени файла.
15
15
-**`options`** -- необязательный объект:
16
-
-**`lastModified`** -- timestamp (целочисленная дата) последнего изменения.
16
+
-**`lastModified`** -- дата последнего изменения в формате timestamp (целое число).
17
17
18
18
Во-вторых, чаще всего мы получаем файл из `<input type="file">` или через перетаскивание с помощью мыши, или других интерфейсов браузера. Затем этот файл получает нужную информацию из ОС.
19
19
@@ -33,14 +33,14 @@ function showFile(input) {
33
33
```
34
34
35
35
```smart
36
-
Через `<input>` можно выбрать несколько файлов, поэтому `input.files` -- массивоподобный объект выбранных файлов. Здесь у нас только один файл, поэтому мы просто берём `input.files[0]`.
36
+
Через `<input>` можно выбрать несколько файлов, поэтому `input.files` -- псевдомассив выбранных файлов. Здесь у нас только один файл, поэтому мы просто берём `input.files[0]`.
37
37
```
38
38
39
39
## FileReader
40
40
41
-
Единственная цель объекта [FileReader](https://www.w3.org/TR/FileAPI/#dfn-filereader)заключается в чтении информации из объекта `Blob` и, следовательно, `File`.
41
+
[FileReader](https://www.w3.org/TR/FileAPI/#dfn-filereader)объект, цель которого: читать данные из `Blob`(и, следовательно, `File` тоже).
42
42
43
-
В основе лежат события, так как чтение с диска может занять некоторое время.
43
+
Данные передаются при помощи событий, так как чтение с диска может занять время.
44
44
45
45
Конструктор:
46
46
@@ -52,7 +52,7 @@ let reader = new FileReader(); // без аргументов
52
52
53
53
-**`readAsArrayBuffer(blob)`** -- считать данные как `ArrayBuffer`
54
54
-**`readAsText(blob, [encoding])`** -- считать данные как строку (кодировка по умолчанию: `utf-8`)
55
-
-**`readAsDataURL(blob)`** -- считать данные в формате base64 для URL.
55
+
-**`readAsDataURL(blob)`** -- считать данные как base64-кодированный URL.
56
56
-**`abort()`** -- отменить операцию.
57
57
58
58
В процессе чтения можно "слушать" следующие события:
@@ -61,13 +61,13 @@ let reader = new FileReader(); // без аргументов
61
61
-`load` -- нет ошибок, чтение окончено.
62
62
-`abort` -- вызван `abort()`.
63
63
-`error` -- произошла ошибка.
64
-
-`loadend` -- загрузка закончилась успешно или нет.
64
+
-`loadend` -- чтение завершено (успешно или нет).
65
65
66
66
Когда чтение закончено, мы сможем получить доступ к его результату следующим образом:
67
67
-`reader.result` результат чтения (если оно успешно)
68
68
-`reader.error` объект ошибки (при неудаче).
69
69
70
-
Наиболее часто используемые события это, конечно же, `load` и `error`.
70
+
Наиболее часто используемые события - это, конечно же, `load` и `error`.
71
71
72
72
Вот пример чтения файла:
73
73
@@ -100,16 +100,16 @@ function readFile(input) {
100
100
Поэтому мы можем использовать его для преобразования Blob в другой формат:
101
101
-`readAsArrayBuffer(blob)` -- в `ArrayBuffer`,
102
102
-`readAsText(blob, [encoding])` -- в строку (альтернатива `TextDecoder`),
103
-
-`readAsDataURL(blob)` -- в формат base64 для URL.
103
+
-`readAsDataURL(blob)` -- в формат base64-кодированного URL.
104
104
```
105
105
106
106
107
107
```smart header="`FileReaderSync` доступен только для веб-воркеров"
108
108
Для веб-воркеров существует также и синхронный вариант `FileReader`, именуемый [FileReaderSync](https://www.w3.org/TR/FileAPI/#FileReaderSync).
109
109
110
-
Его методы считывания `read*` не генерируют события, а скорее возвращают результат, как это делают обычные функции.
110
+
Его методы считывания `read*` не генерируют события, а возвращают результат, как это делают обычные функции.
111
111
112
-
Но это только внутри веб-воркера, поскольку задержки и зависания в веб-воркерах менее важны, они не влияют на страницу.
112
+
Но это только внутри веб-воркера, поскольку задержки в синхронных вызовах, которые возможны при чтении из файла, в веб-воркерах менее важны. Они не влияют на страницу.
0 commit comments