JavaScript/DOM lokale Datei auslesen?

1 Antwort

Von Experte medmonk bestätigt

Das ist mit Fetch möglich, sofern du die richtige Adresse zur Datei angibst und zusätzlich Zugriffsrechte bestehen. Sollte die Datei bspw. nur über eine andere Domain erreichbar sein, wird der Aufruf standardmäßig blockiert (Stichwort: CORS).

fetch("http://somedomain.de/file.txt")
  .then(response => response.text())
  .then(data => document.getElementById("id-of-div").textContent = data);

Sofern du bei dir lokal auf dem eigenen Rechner testen möchtest, installiere einen Webserver (IIS / Apache / ...) und rufe dein HTML-Dokument über diesen auf http://localhost/...). Wenn du die Datei über das file://-Protokoll öffnest, wird dein Browser einen Request blockieren.

Lucnardo 
Fragesteller
 23.12.2021, 22:51

Okay geht das ganze auch mit ./text.txt oder muss die domain dran stehen?

0
Lucnardo 
Fragesteller
 23.12.2021, 22:53
@regex9

okay geht das ganze auch wenn ich das mit express mache?

0
regex9  23.12.2021, 22:59
@Lucnardo

Mit express.js - ja. Dann hast du ja ebenso einen Server, über den die Webseite ausgespielt wird.

Wenn der Request direkt auf Serverseite ausgeführt werden soll, könntest du Module wie fetch oder Axios (oder halt Node.js-Bordmittel) verwenden.

0
Lucnardo 
Fragesteller
 24.12.2021, 09:44
@regex9

Hm.. also mit fetch get es nicht. Berechtigungen sind aber da das habe ich Kontroliert.  

0
Lucnardo 
Fragesteller
 24.12.2021, 09:44
@Lucnardo
 const fileUrl = './text.txt' // provide file location

    fetch(fileUrl)
      .then(r => r.text())
      .then(t => document.getElementById('text').innerHTML = t)
      .catch(error => alert(error)); 


Mein Code
0
regex9  24.12.2021, 09:48
@Lucnardo

Da du in deiner Fragestellung einen 404 Response andeutest, würde ich zunächst davon ausgehen, dass der Pfad nicht korrekt ist.

Schau zusätzlich in die Entwicklerkonsole (Console / Network). Der Responsecode wäre von Interesse (sofern er von 404 abweicht) und etwaige Fehlermeldungen bezüglich CORS/o.ä..

0
Lucnardo 
Fragesteller
 24.12.2021, 09:50
@regex9

muss er aber. Der Express Server Schickt dir index.html die in einem Ordner liegt an den Client. Die Html file hat aber eine txt im selben ordner mit dem name text.txt ich habe versucht von dem Server auszugehen und ich habe es so wie man es im Snippet sieht von der HTML aus getestet

0
regex9  24.12.2021, 09:55
@Lucnardo

Probiere es zuerst mit einer absoluten URL, denn die muss auf jeden Fall korrekt sein. Wenn es mit der klappt, ist deine relative Pfadangabe falsch. Wenn es scheitert, gibt es ein tatsächliches Zugriffsproblem auf deine Datei.

0
Lucnardo 
Fragesteller
 24.12.2021, 09:57
@regex9

kann das eventuell damit zu tun haben das der Express server die verbindung ablehnt?

0
regex9  24.12.2021, 09:58
@Lucnardo

Das solltest du in der Browserkonsole anhand einer Fehlermeldung sehen können.

0
Lucnardo 
Fragesteller
 24.12.2021, 10:03
@regex9

ich hab das Proplem gefunden und gelöst danke. Ich musste nur ne Weiterleitung im Server festlegen

1
medmonk  23.12.2021, 22:54

Ich hatte mein Snippet fast so weit, im Grunde identisch zu deinem bloß innerhalb einer function angelegt. Du warst aber etwas schneller. ;)

0