Ich versuche, einen einfachen Textdateireader zu schreiben, indem ich eine Funktion erstelle, die den Pfad der Datei übernimmt und jede Textzeile in ein char-Array konvertiert, aber es funktioniert nicht.
function readTextFile() {
var rawFile = new XMLHttpRequest();
rawFile.open("GET", "testing.txt", true);
rawFile.onreadystatechange = function() {
if (rawFile.readyState === 4) {
var allText = rawFile.responseText;
document.getElementById("textSection").innerHTML = allText;
}
}
rawFile.send();
}
Was läuft hier falsch?
Dies scheint immer noch nicht zu funktionieren, nachdem der Code ein wenig von einer früheren Revision geändert wurde, und jetzt gibt es mir eine XMLHttpRequest
Ausnahme 101.
Ich habe dies unter Firefox getestet und es funktioniert, aber in Google Chrome funktioniert es einfach nicht und es gibt mir immer wieder eine Ausnahme 101. Wie kann ich erreichen, dass dies nicht nur in Firefox, sondern auch in anderen Browsern (insbesondere Chrome) funktioniert? )?
status
von0
sowie200
.Antworten:
Sie müssen nach Status 0 suchen (wie beim lokalen Laden von Dateien mit
XMLHttpRequest
wird kein Status zurückgegeben, da dieser nicht von a stammtWebserver
).Und geben Sie
file://
in Ihrem Dateinamen an:quelle
file:///User/Danny/Desktop/javascriptWork/testing.txt
in die URL-Leiste Ihres Browsers zu setzen und zu sehen, ob Sie die Datei sehen können.true
. Wenn dies eine einfachelocal
Suche wäre, wäre das Setzen von async auffalse
ok, wird jedochonreadystatechange
nicht benötigt, solange es auf false gesetzt ist. Hier ist die Dokumentation: w3schools.com/ajax/ajax_xmlhttprequest_send.aspBesuchen Sie Javascripture ! Gehen Sie zum Abschnitt readAsText und probieren Sie das Beispiel aus. Sie können wissen, wie die readAsText- Funktion von FileReader funktioniert.
quelle
Nach der Einführung von fetch api in Javascript könnte das Lesen von Dateiinhalten nicht einfacher sein.
Lesen einer Textdatei
Lesen einer JSON-Datei
Update 30/07/2018 (Haftungsausschluss):
Update-2 (Haftungsausschluss):
quelle
Referer
". Ich denke, das bedeutet Abschied von guten alten Dateireadern und HttpRequests (und ich werde sie nicht ein bisschen vermissen;)Fetch API cannot load file:///C:/Users/path/to/file/file.txt. URL scheme must be "http" or "https" for CORS request.
quelle
var reader = new FileReader();
durchreader.readAsBinaryString(..)
- liest es den Inhalt meiner Textdatei. Sauber, elegant, wirkt wie ein Zauber. Beste Antwort in diesem Thread für mich - danke!Jon Perryman,
Ja, js kann lokale Dateien lesen (siehe FileReader ()), aber nicht automatisch: Der Benutzer muss die Datei oder eine Liste von Dateien mit einem HTML-Code an das Skript übergeben
<input type=file>
.Mit js ist es dann möglich, die Datei oder die Liste der Dateien, einige ihrer Eigenschaften und die Datei oder den Dateiinhalt zu verarbeiten (Beispielansicht).
Was js aus Sicherheitsgründen nicht tun kann, ist der automatische Zugriff (ohne Benutzereingabe) auf das Dateisystem seines Computers.
Damit js automatisch auf die lokalen fs zugreifen kann, muss keine HTML-Datei mit js darin erstellt werden, sondern ein hta-Dokument.
Eine hta-Datei kann js oder vbs enthalten.
Die ausführbare Datei hta funktioniert jedoch nur auf Windows-Systemen.
Dies ist das Standardverhalten des Browsers.
Auch Google Chrome funktionierte bei der fs api, weitere Infos hier: http://www.html5rocks.com/en/tutorials/file/filesystem/
quelle
Wenn Sie es bereits versuchen, geben Sie "false" wie folgt ein:
quelle
Versuchen Sie, zwei Funktionen zu erstellen:
quelle
anderes Beispiel - mein Leser mit FileReader-Klasse
quelle
Verwenden der Abruf- und Async-Funktion
quelle
Dies könnte helfen,
quelle
Moderne Lösung:
Wenn der Benutzer eine Textdatei über diese Eingabe hochlädt, wird diese an der Konsole protokolliert. Hier ist eine funktionierende jsbin-Demo .
Hier ist eine ausführlichere Version:
Derzeit (Januar 2020) funktioniert dies nur in Chrome und Firefox. Überprüfen Sie hier die Kompatibilität, wenn Sie dies in Zukunft lesen: https://developer.mozilla.org/en-US/docs/Web/API/Blob/text
In älteren Browsern sollte dies funktionieren:
quelle
Zusätzlich zu einigen der oben genannten Antworten hat diese modifizierte Lösung für mich funktioniert.
....
....
quelle
- Lesen Sie den Dateitext aus Javascript
- Konsolenprotokolltext aus der Datei mit Javascript
- Google Chrome und Mozilla Firefox
In meinem Fall habe ich diese Dateistruktur :
das Ergebnis von console.log:
quelle
quelle
Holen Sie sich lokale Dateidaten in js (data.js) load:
Datei von data.js wie:
dynamischer unixTime queryString verhindert das Zwischenspeichern.
AJ arbeitet im Web http: //.
quelle
Lokale AJAX-Aufrufe in Chrome werden aufgrund der Richtlinie für denselben Ursprung nicht unterstützt.
Die Fehlermeldung auf Chrome lautet wie folgt: "Ursprungsübergreifende Anforderungen werden für Protokollschemata nicht unterstützt: http, data, chrome, chrome-extension, https."
Dies bedeutet, dass Chrome für jede Domäne eine virtuelle Festplatte erstellt, auf der die von der Domäne bereitgestellten Dateien mithilfe von http / https-Protokollen gespeichert werden. Jeder Zugriff auf Dateien außerhalb dieser virtuellen Festplatte unterliegt derselben Ursprungsrichtlinie. AJAX-Anfragen und -Antworten erfolgen unter http / https und funktionieren daher nicht für lokale Dateien.
Firefox legt keine solche Einschränkung fest, daher funktioniert Ihr Code auf dem Firefox problemlos. Es gibt jedoch auch Problemumgehungen für Chrom: siehe hier .
quelle
Sie können meine Bibliothek importieren:
Anschließend gibt die Funktion
fetchfile(path)
die hochgeladene Datei zurückBitte beachten Sie: Wenn der HTML-Code in Google Chrome lokal ist, werden Fehler angezeigt. Das Speichern des HTML-Codes und der Dateien online und das Ausführen der Online-HTML-Datei funktioniert jedoch.
quelle
Um einen lokalen Dateitext
JavaScript
mithilfe von Chrome zu lesen , sollte der Chrome-Browser mit dem Argument ausgeführt werden--allow-file-access-from-files
, damit JavaScript auf lokale Dateien zugreifen kann. Anschließend können Sie ihnXmlHttpRequest
wie folgt lesen :quelle
Wie lese ich eine lokale Datei?
Wenn Sie dies verwenden, laden Sie eine Datei mit loadText (). Anschließend wartet JS asynchron, bis die Datei gelesen und geladen wurde. Anschließend wird die Funktion readText () ausgeführt, sodass Sie mit Ihrer normalen JS-Logik fortfahren können (Sie können auch einen Try-Catch schreiben Blockieren Sie die Funktion loadText (), falls ein Fehler auftritt), aber für dieses Beispiel halte ich sie auf einem Minimum.
quelle
Ich weiß, ich bin zu spät auf dieser Party. Lassen Sie mich Ihnen zeigen, was ich habe.
Dies ist ein einfaches Lesen der Textdatei
Ich hoffe das hilft.
quelle