Mit Javascript lokal lokale Dateien öffnen?
Hallo liebe Community,
ich verzweifel im Moment sehr stark. Hab gestern stundenlang nach Lösungsvorschlägen gesucht, aber nichts gefunden.
Was ist mein Ziel? Ich will eine HTML-Datei lokal öffnen und mit Hilfe von Javascript einige lokale Text-Dateien einlesen und verarbeiten. In pHp funktioniert das mit wenigen Zeilen und recht einfach. In Javascript krieg ich das nicht hin, weil ich immer diesen CORS-Fehler bekomme. Den kann ich aber nicht abstellen.
Lade ich alles auf meinen Webspace hoch funktioniert es auch. Leider bringt mir das nichts, weil die auszulesenden Dateien lokal von einem anderen Programm erstellt werden.
Ich muss doch dem Browser irgendwie sagen können, dass er lokale Dateien auslesen darf.
Achja, ich hab auch node.js installiert. Optimalerweise wollte ich daraus mit electron eine Desktopanwendung bauen.
Jemand eine Idee?? Wäre klasse, danke :-).
2 Antworten
Das kann JavaScript nicht. Das ist auch so gewollt.
Sonst könnte ich die in einer HTML-Seite JavaScript-Code geben, die deine privaten Dateien öffnet und mir den Inhalt per AJAX übermittelt.
Das wäre ein ein Einfallstor für jedermann.
Wenn du auf lokale Dateien zugreifen willst, dann muss das der HTTP-Server machen, wenn er bei dir ist. Das geht beispielsweise mit AJAX als Transport-Art und PHP als Skriptsprache. PHP kann dann da, wo die HTML-Seite steht (auf dem Computer), Dateien öffnen.
Du müsstest dir lokal einen Webserver installieren (z.B. Apache, oder IIS), über den du die HTML-Datei ausführen lässt. Dann kannst du via AJAX-Request auf eine Datei zugreifen.
Beispiel:
<!DOCTYPE html>
<title>Open local file with JS</title>
<script>
function readTextFile(filename) {
var request = new XMLHttpRequest();
request.open("GET", filename);
request.onreadystatechange = function() {
if (request.readyState !== 4) {
return;
}
if (request.status === 200 || request.status == 0) {
document.write(request.responseText);
}
}
request.send(null);
}
readTextFile("someFile.txt");
</script>
In NodeJS könntest du das File System-Modul verwenden, um auf das Dateisystem zuzugreifen, auf dem die Backend-Anwendung läuft.