FileReader
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Das FileReader
-Interface ermöglicht es Webanwendungen, die Inhalte von Dateien (oder Rohdatenpuffern), die auf dem Computer des Nutzers gespeichert sind, auf asynchrone Weise zu lesen. Dies erfolgt unter Verwendung von File
- oder Blob
-Objekten, um die zu lesende Datei oder Daten anzugeben.
Dateiobjekte können von einem FileList
-Objekt stammen, das als Ergebnis einer Benutzeraktion, wie dem Auswählen von Dateien über das <input type="file">
-Element oder einem Drag-and-Drop-Vorgang, durch das DataTransfer
-Objekt zurückgegeben wird. FileReader
kann nur auf Inhalte von Dateien zugreifen, die der Benutzer explizit ausgewählt hat; es kann nicht verwendet werden, um eine Datei per Pfadname aus dem Dateisystem des Benutzers zu lesen. Um Dateien im Dateisystem des Clients per Pfadname zu lesen, verwenden Sie die File System Access API. Um serverseitige Dateien zu lesen, verwenden Sie fetch()
, mit CORS-Berechtigung, wenn Cross-Origin-Zugriffe erfolgen.
Konstruktor
FileReader()
-
Gibt ein neues
FileReader
-Objekt zurück.
Siehe Verwendung von Dateien aus Webanwendungen für Details und Beispiele.
Instanz-Eigenschaften
FileReader.error
Schreibgeschützt-
Ein
DOMException
, das den Fehler darstellt, der beim Lesen der Datei aufgetreten ist. FileReader.readyState
Schreibgeschützt-
Eine Zahl, die den Zustand des
FileReader
anzeigt. Dies ist einer der folgenden:Name Wert Beschreibung EMPTY
0
Noch keine Daten geladen. LOADING
1
Daten werden aktuell geladen. DONE
2
Der gesamte Lesevorgang wurde abgeschlossen. FileReader.result
Schreibgeschützt-
Der Inhalt der Datei. Diese Eigenschaft ist erst nach Abschluss des Lesevorgangs gültig, und das Datenformat hängt davon ab, welche Methode verwendet wurde, um den Lesevorgang zu starten.
Instanz-Methoden
FileReader.abort()
-
Bricht den Lesevorgang ab. Nach der Rückkehr wird der
readyState
aufDONE
gesetzt. FileReader.readAsArrayBuffer()
-
Beginnt mit dem Lesen des Inhalts des angegebenen
Blob
. Nach Abschluss enthält dasresult
-Attribut einenArrayBuffer
, der die Daten der Datei darstellt. FileReader.readAsBinaryString()
Veraltet-
Beginnt mit dem Lesen des Inhalts des angegebenen
Blob
. Nach Abschluss enthält dasresult
-Attribut die Roh-Binärdaten der Datei als String. FileReader.readAsDataURL()
-
Beginnt mit dem Lesen des Inhalts des angegebenen
Blob
. Nach Abschluss enthält dasresult
-Attribut einedata:
-URL, die die Daten der Datei darstellt. FileReader.readAsText()
-
Beginnt mit dem Lesen des Inhalts des angegebenen
Blob
. Nach Abschluss enthält dasresult
-Attribut den Inhalt der Datei als Text-String. Ein optionaler Name der Kodierung kann angegeben werden.
Ereignisse
Hören Sie diese Ereignisse mit addEventListener()
ab oder indem Sie einen Ereignis-Listener der oneventname
-Eigenschaft dieses Interfaces zuweisen. Entfernen Sie die Ereignis-Listener mit removeEventListener()
, sobald FileReader
nicht mehr verwendet wird, um Speicherlecks zu vermeiden.
abort
-
Wird ausgelöst, wenn ein Lesevorgang abgebrochen wurde, beispielsweise weil das Programm
FileReader.abort()
aufgerufen hat. error
-
Wird ausgelöst, wenn das Lesen aufgrund eines Fehlers fehlgeschlagen ist.
load
-
Wird ausgelöst, wenn ein Lesevorgang erfolgreich abgeschlossen wurde.
loadend
-
Wird ausgelöst, wenn ein Lesevorgang abgeschlossen wurde, unabhängig davon, ob er erfolgreich war oder nicht.
loadstart
-
Wird ausgelöst, wenn ein Lesevorgang gestartet wurde.
progress
-
Wird regelmäßig ausgelöst, während Daten gelesen werden.
Beispiele
Verwendung von FileReader
Dieses Beispiel liest und zeigt die Inhalte einer Textdatei direkt im Browser an.
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";
}
Ergebnis
Spezifikationen
Specification |
---|
File API # APIASynch |