FileReader
Базовая реализация Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.
Примечание: Эта функция доступна в Web Workers.
Интерфейс FileReader позволяет веб-приложениям асинхронно читать содержимое файлов (или буферов с сырыми данными), хранящихся на компьютере пользователя, используя объекты File или Blob для указания файла или данных для чтения.
Объекты файлов можно получить из объекта FileList, возвращаемого в результате выбора пользователем файлов с помощью элемента <input type="file">, или из объекта DataTransfer операции перетаскивания. FileReader может получить доступ только к содержимому файлов, которые пользователь явно выбрал; он не может использоваться для чтения файла по пути из файловой системы пользователя. Для чтения файлов в файловой системе клиента по пути используйте API доступа к файловой системе. Для чтения файлов на стороне сервера используйте fetch() с разрешением CORS, если требуется чтение из другого источника.
Конструктор
FileReader()-
Возвращает новый объект
FileReader.
См. Использование файлов из веб-приложений для получения подробных сведений и примеров.
Свойства экземпляра
-
FileReader.errorТолько чтение -
Объект
DOMException, представляющий ошибку, возникшую при чтении файла. -
FileReader.readyStateТолько чтение -
Число, указывающее состояние
FileReader. Оно может принимать следующие значения:Имя Значение Описание EMPTY0Данные еще не загружены. LOADING1Данные загружаются в данный момент. DONE2Запрос чтения завершен полностью. -
FileReader.resultТолько чтение -
Содержимое файла. Это свойство становится доступным только после завершения операции чтения, а формат данных зависит от метода, используемого для запуска операции чтения.
Методы экземпляра
FileReader.abort()-
Прерывает операцию чтения. По возвращении значение
readyStateбудетDONE. FileReader.readAsArrayBuffer()-
Начинает чтение содержимого указанного
Blob, по окончании чтения свойствоresultсодержит объектArrayBuffer, представляющий данные файла. -
FileReader.readAsBinaryString()Устарело -
Начинает чтение содержимого указанного
Blob, по окончании чтения свойствоresultсодержит исходные двоичные данные файла в виде строки. FileReader.readAsDataURL()-
Начинает чтение содержимого указанного
Blob, по окончании чтения свойствоresultсодержитdata:URL, представляющий данные файла. FileReader.readAsText()-
Начинает чтение содержимого указанного
Blob, по окончании чтения свойствоresultсодержит содержимое файла в виде текстовой строки. Можно указать необязательное имя кодировки.
События
Присоединяйтесь к этим событиям, используя addEventListener() или назначив обработчик событий свойству oneventname этого интерфейса. Удалите обработчики событий с помощью removeEventListener(), когда FileReader больше не используется, чтобы избежать утечки памяти.
abort-
Срабатывает, когда чтение прервано, например, потому что программа вызвала
FileReader.abort(). error-
Срабатывает, когда чтение завершилось с ошибкой.
load-
Срабатывает, когда чтение завершено успешно.
loadend-
Срабатывает, когда чтение завершено, успешно или нет.
loadstart-
Срабатывает, когда началось чтение.
progress-
Срабатывает периодически по мере чтения данных.
Примеры
Использование FileReader
В этом примере читается и отображается содержимое текстового файла непосредственно в браузере.
HTML
<h1>File Reader</h1> <input type="file" id="file-input" /> <div id="message"></div> <pre id="file-content"></pre>
JavaScript
const fileInput = document.getElementById("file-input");
const fileContentDisplay = document.getElementById("file-content");
const messageDisplay = document.getElementById("message");
fileInput.addEventListener("change", handleFileSelection);
function handleFileSelection(event) {
const file = event.target.files[0];
fileContentDisplay.textContent = ""; // Clear previous file content
messageDisplay.textContent = ""; // Clear previous messages
// Validate file existence and type
if (!file) {
showMessage("No file selected. Please choose a file.", "error");
return;
}
if (!file.type.startsWith("text")) {
showMessage("Unsupported file type. Please select a text file.", "error");
return;
}
// Read the file
const reader = new FileReader();
reader.onload = () => {
fileContentDisplay.textContent = reader.result;
};
reader.onerror = () => {
showMessage("Error reading the file. Please try again.", "error");
};
reader.readAsText(file);
}
// Displays a message to the user
function showMessage(message, type) {
messageDisplay.textContent = message;
messageDisplay.style.color = type === "error" ? "red" : "green";
}
Результат
Спецификации
| Спецификация |
|---|
| File API # APIASynch |
Совместимость с браузерами
| Настольный | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
FileReader |
6 | 12 | 3.6 | ≤12.1 | 6 | 18 | 32 | ≤12.1 | 6 | 1.0 | 3 |
FileReader |
6 | 12 | 3.6До Firefox 4, параметрыBlob были параметрами File. |
11 | 6 | 18 | 32 | 11 | 6 | 1.0 | 3 |
abort |
6 | 12 | 3.6 | 11 | 6 | 18 | 32 | 11 | 6 | 1.0 | 3 |
abort_event |
6 | 12 | 3.6 | 11 | 6 | 18 | 32 | 11 | 6 | 1.0 | 3 |
error |
6 | 12 | 3.6["До Firefox 13, свойствоerror возвращало объект FileError.", "С Firefox 13 по Firefox 58, свойство error возвращало объект DOMError.", "С Firefox 58, свойство error возвращает объект DOMException. "] |
11 | 6Свойствоerror возвращает объект DOMError. |
18 | 32["С Firefox 32 по Firefox 58, свойствоerror возвращало объект DOMError.", "С Firefox 58, свойство error возвращает объект DOMException. "] |
11 | 6Свойствоerror возвращает объект DOMError. |
1.0 | 3 |
error_event |
6 | 12 | 3.6 | 11 | 6 | 18 | 32 | 11 | 6 | 1.0 | 3 |
load_event |
6 | 12 | 3.6 | 11 | 6 | 18 | 32 | 11 | 6 | 1.0 | 3 |
loadend_event |
6 | 12 | 3.6 | 11 | 6 | 18 | 32 | 11 | 6 | 1.0 | 3 |
loadstart_event |
6 | 12 | 793.6–79Событиеloadstart отправляется синхронно (должно быть асинхронно, согласно спецификации). |
11 | 6 | 18 | 7932–79Событиеloadstart отправляется синхронно (должно быть асинхронно, согласно спецификации). |
11 | 6 | 1.0 | 3 |
progress_event |
6 | 12 | 3.6 | 11 | 6 | 18 | 32 | 11 | 6 | 1.0 | 3 |
readAsArrayBuffer |
6 | 12 | 3.6 | 12 | 6 | 18 | 32 | 12 | 6 | 1.0 | 3 |
readAsBinaryString |
6 | 12 | 3.6 | 11 | 6 | 18 | 32 | 11 | 6 | 1.0 | 3 |
readAsDataURL |
6 | 12 | 3.6 | 11 | 6 | 18 | 32Использование камеры в Android 8.x вызывает исключение. Смотрите ошибку 1511083. |
11 | 6 | 1.0 | 3 |
readAsText |
6 | 12 | 3.6 | 11 | 6 | 18 | 32 | 11 | 6 | 1.0 | 3 |
readyState |
6 | 12 | 3.6 | 11 | 6 | 18 | 32 | 11 | 6 | 1.0 | 3 |
result |
6 | 12 | 3.6 | 11 | 6 | 18 | 32 | 11 | 6 | 1.0 | 3 |
worker_support |
6 | 12 | 46 | 11 | 6 | 18 | 46 | 11 | 6 | 1.0 | ≤37 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/FileReader