Verwenden Sie JS, um Dateien zu bearbeiten (FileReader liest --node's fs)

Verwenden Sie JS, um Dateien zu bearbeiten (FileReader liest --node's fs)

JS liest Datei FileReader

Mit dem FileReader-Objekt kann eine Webanwendung den Inhalt einer auf dem Computer des Benutzers gespeicherten Datei (oder eines Rohdatenpuffers) asynchron lesen. Dabei wird ein File- oder Blob-Objekt verwendet, um die zu lesende Datei oder die zu lesenden Daten anzugeben.

dokumentieren

Dateileser

Ereignisse und Methoden

Ereignisbehandlung

FileReader.onabort Behandeln Sie das Abbruchereignis. Dieses Ereignis wird ausgelöst, wenn ein Lesevorgang unterbrochen wird.
FileReader.onerror Behandeln Sie das Fehlerereignis. Dieses Ereignis wird ausgelöst, wenn während eines Lesevorgangs ein Fehler auftritt.
FileReader.onload Behandeln Sie das Ladeereignis. Dieses Ereignis wird ausgelöst, wenn ein Lesevorgang abgeschlossen ist.
FileReader.onloadstart Behandeln Sie das Loadstart-Ereignis. Dieses Ereignis wird ausgelöst, wenn ein Lesevorgang beginnt.
FileReader.onloadend Behandeln Sie das Loadend-Ereignis. Dieses Ereignis wird ausgegeben, wenn ein Lesevorgang abgeschlossen ist (entweder erfolgreich oder nicht erfolgreich).
FileReader.onprogress Behandeln Sie das Fehlerereignis. Dieses Ereignis wird ausgelöst, wenn während eines Lesevorgangs ein Fehler auftritt.

Standardmethoden

  • FileReader.abort()

Brechen Sie den Lesevorgang ab. Bei der Rückgabe lautet die Eigenschaft readyState DONE.

  • FileReader.readAsArrayBuffer()

Beginnen Sie mit dem Lesen des Inhalts des angegebenen Blobs. Sobald der Vorgang abgeschlossen ist, enthält die Ergebnisseigenschaft das ArrayBuffer-Datenobjekt der gelesenen Datei.

  • FileReader.readAsDataURL()

Beginnen Sie mit dem Lesen des Inhalts des angegebenen Blobs. Nach Abschluss enthält die Ergebnisseigenschaft eine Zeichenfolge im Format „Daten: URL“, die den Inhalt der gelesenen Datei darstellt.

  • FileReader.readAsText()

Beginnen Sie mit dem Lesen des Inhalts des angegebenen Blobs. Nach Abschluss enthält die Ergebnisseigenschaft eine Zeichenfolge, die den Inhalt der gelesenen Datei darstellt.

Grundlegende Verwendung

Dateivorbereitung: read.txt (Sie können jede Datei auf Ihrem Computer lesen)

Lesen von Dateien

HTML-Struktur

<Eingabetyp="Datei" mehrere>

JS-Aufruf

<Skript>
	fenster.onload = funktion(){
		var inpFile = document.querySelector('Eingabe[Typ=Datei]')
		inpFile.addEventListener('ändern', Funktion(){
			var reader = neuer FileReader()
			// Asynchrone Anfrage senden // 0. Methode readAsText verwenden (Ergebnis als normalen Text lesen)
			Leser.readAsText(diese.Dateien[0]) 
			//Ergebnis des erfolgreichen Lesens: Die Datei wurde erfolgreich gelesen (die Datei read.txt liegt auf dem Rechner)
			Leser.onload = Funktion(){
    		//Nach dem Lesen werden die Daten in der Result-Eigenschaft des Objekts gespeichert console.log(this.result)//Drucken: Die Datei wurde erfolgreich gelesen }
		})
	}
</Skript>

JS-Aufrufe verwenden andere Methoden (andere Methoden werden auf die gleiche Weise verwendet)

readAsDataURL

fenster.onload = funktion(){
		var inpFile = document.querySelector('Eingabe[Typ=Datei]')
		inpFile.addEventListener('ändern', Funktion(){
			var reader = neuer FileReader()
			// Verwenden Sie readAsDataURL (um die Base64-Kodierung zu erhalten)
			reader.readAsDataURL(diese.dateien[0])
			Leser.onload = Funktion(){
    		konsole.log(dieses.ergebnis)
    		//Daten:Text/Plain;Base64,5bey57uP5oiQ5Yqf6K+75Y+W5paH5Lu2
  			}
		})
	}

Ereignisbehandlung

JS-Aufruf (verwenden Sie weiterhin das obige HTML und die Dateien – oder bereiten Sie eine größere Datei vor; die Wirkung ist dann besser)

fenster.onload = funktion(){
		var inpFile = document.querySelector('Eingabe[Typ=Datei]')
		inpFile.addEventListener('ändern', Funktion(){
			var reader = neuer FileReader()
			Leser.readAsText(diese.Dateien[0])
			Variablenanzahl = 0;
			Leser.onloadstart = Funktion(){
				console.log("Onloadstart-Status"+this.readyState)
    			console.log("Laden starten")
  			}
  			reader.onloadend = Funktion(){
  				console.log("Onloadend-Status"+this.readyState)
    			console.log("Laden abgeschlossen")
  			}
  			reader.onprogress = Funktion(){
  				zählen++;
  				console.log("Status des Fortschritts"+this.readyState)
    			console.log("Wird geladen"+Anzahl)
  			}
			Leser.onload = Funktion(){
    			console.log("Die von onload erhaltenen Daten sind "+this.result)
    			Konsole.log("Status"+dieser.readyState)
  			}
  			Leser.beiFehler = Funktion(){
    			console.log('Etwas ist schiefgelaufen')
  			}
  			Leser.beiFehler = Funktion(){
    			console.log('Behandeln Sie das Abbruchereignis. Dieses Ereignis wird ausgelöst, wenn der Lesevorgang unterbrochen wird.')
  			}
		})
	}

Die Ergebnisse sind wie folgt

Das Ergebnis der Ereignisverarbeitung

Wichtige Ergebnisanalyse:

  • Zustand 1 (readyState): Daten werden geladen
  • Status 2: Alle Leseaufträge wurden abgeschlossen.
  • Der Status 0 (readyState) bedeutet natürlich, dass noch keine Daten geladen wurden.
  • Ein Fortschrittsereignis wird etwa alle 50 ms ausgelöst. Das heißt, es kann mehrmals ausgelöst werden, und das Onload-Ereignis wird vor dem Onloadend-Ereignis ausgelöst.
  • Wenn die Datei aus verschiedenen Gründen nicht gelesen werden kann, wird das Fehlerereignis ausgelöst. Wenn das Fehlerereignis ausgelöst wird, werden die relevanten Informationen in der Fehlereigenschaft des FileReader-Objekts gespeichert. Diese Eigenschaft speichert ein Objekt mit nur einem Eigenschaftscode, nämlich dem Fehlercode. 1 bedeutet: Datei nicht gefunden, 2 bedeutet: Sicherheitsfehler, 3 bedeutet: Lesen unterbrochen, 4 bedeutet: Datei nicht lesbar und 5 bedeutet: Kodierungsfehler.
  • Wenn Sie den Lesevorgang unterbrechen möchten, können Sie die Abbruchmethode aufrufen, die das Abbruchereignis auslöst. Bei der Rückgabe lautet die Eigenschaft readyState DONE. Wird im Allgemeinen für Hintergrundvorgänge verwendet.

Knotenoperationsdatei (Readfile)

Basierend auf dem oben Gesagten können wir erkennen, dass JavaScript im Browser nicht die Möglichkeit hat, Dateien zu verarbeiten (aus Sicherheitsgründen kann es lokale Dateien nicht direkt verarbeiten), JavaScript in Node jedoch die Möglichkeit hat, Dateien zu verarbeiten.

Wie liest Node Dateien? (Sie können den Code bei der Installation von Node ignorieren.)

  • Zuerst müssen Sie die Knotenumgebung installieren (sehr einfach, es gibt viele Tutorials online), und am besten installieren Sie auch nodemon
  • Öffnen Sie Ihre cmd und verwenden Sie git
  • JS-Datei erstellen
  • Laden des Kernmoduls des Knotens
  • Verwenden von readFile
  • Geben Sie den Knotendateinamen.js in cmd ein
// 1. Verwenden Sie die Methode require, um das fs-Kernmodul zu laden var fs = require('fs')
// 2. Datei lesen // Der erste Parameter ist der zu lesende Dateipfad // Der zweite Parameter ist eine Callback-Funktion // Erfolg // Daten Daten // Fehler null
// Fehlgeschlagen // Daten undefiniert keine Daten // Fehler Fehlerobjekt fs.readFile('read.txt', function (error, data) {
  // Hier können Sie prüfen, ob ein Fehler aufgetreten ist, indem Sie error if (error) { beurteilen.
    console.log('Die Datei konnte nicht gelesen werden.')
  } anders {
    Konsole.log(Daten.toString())
  }
})

Ergebnis

Knoten liest die Datei

Das Lesen von Dateien ist ein asynchroner Vorgang.

Wenn wir mehrere Dateien lesen, stellen wir fest, dass die Verwendung von readfile zum Lesen von Dateien die Ergebnisse nicht unbedingt in der richtigen Reihenfolge ausgibt. Dies ist also ein asynchroner Vorgang. So lesen Sie Dateien sequenziell.

Verwenden von Promises

var fs = erfordern('fs')
Funktion pReadFile(Dateipfad) {
  returniere neues Promise(Funktion (auflösen, ablehnen) {
    fs.readFile(Dateipfad, 'utf8', Funktion (Fehler, Daten) {
      wenn (Fehler) {
        ablehnen (Fehler)
      } anders {
        auflösen (Daten)
      }
    })
  })
}
pReadFile('./data/a.txt')
  .then(Funktion (Daten) {
    console.log(Daten)
    returniere pReadFile('./data/b.txt')
  })
  .then(Funktion (Daten) {
    console.log(Daten)
    gibt pReadFile('./data/c.txt') zurück.
  })
  .then(Funktion (Daten) {
    console.log(Daten)
  })

Schreiben von Dateien

fs.writeFile('read.txt', 'Hallo zusammen, ich möchte mich euch vorstellen. Ich bin ein Dateischreiber.', function (error) {
  if (Fehler) {
    console.log('Schreiben fehlgeschlagen')
  } anders {
    console.log('Erfolgreich geschrieben')
  }
})

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Anwendungsbeispiel für JS+HTML5 FileReader-Objekte
  • JavaScript html5 verwendet FileReader, um die Upload-Funktion zu implementieren
  • JavaScript liest Dateien über die Filereader-Schnittstelle

<<:  Implementierung der CSS-Auswahl von untergeordneten Elementen für übergeordnete Elemente

>>:  Detaillierte Einführung in den HTML-Head-Tag

Artikel empfehlen

Dateiupload über HTML5 auf Mobilgeräten

Meistens werden Plug-Ins zum Hochladen von Dateie...

Die perfekte Lösung für Vue-Routing-Fallback (vue-route-manager)

Inhaltsverzeichnis Routenplaner Hintergrund Erste...

So implementieren Sie einen variablen Ausdrucksselektor in Vue

Inhaltsverzeichnis Definieren der HTML-Struktur E...

Vue.js Leistungsoptimierung N Tipps (es lohnt sich, sie zu sammeln)

Inhaltsverzeichnis Funktionskomponenten Aufteilun...

Implementieren eines binären Suchbaums in JavaScript

Die Implementierung des Suchbinärbaums in JavaScr...

Implementierungsbeispiel für die Message Board-Funktion von Node.js+Express

Inhaltsverzeichnis Nachrichtenbrett Erforderliche...

Fallstudie: Ajax responseText analysiert JSON-Daten

Lösen Sie das Problem, dass der vom Server nach d...

So fragen Sie die Schnittmenge von Zeiträumen in MySQL ab

Mysql-Abfragezeitraum-Schnittmenge Anwendungsszen...

JavaScript-Tippspiel

In diesem Artikel wird der spezifische JavaScript...

So verwenden Sie jconsole zum Überwachen von Remote-Tomcat-Diensten

Was ist JConsole JConsole wurde in Java 5 eingefü...

So aktualisieren Sie MySQL 5.6 auf 5.7 unter Windows

Vorne geschrieben Es gibt zwei Möglichkeiten, MyS...