Een tekstfile lezen met JavaScript

HTML heeft maar beperkt toegang tot het bestandssysteem van de computer. Het enige wat het kan is een gedownload bestand opslaan (in een vaststaande map) en aangegeven waar een bestand staat om te uploaden. De map waarin een download wordt opgeslagen is een browserinstelling. Voor een upload kan naar een map worden genavigeerd in een browser-dialog.
Het is hiermee niet mogelijk om een bestand in te lezen vanaf een cliënt-PC om er in de website iets mee te doen. Met JavaScript kan het wel.

Op deze pagina wordt uitgelegd hoe je dat doet voor een bestand met alleen platte tekst. Met binaire data kan het ook, maar dat is ingewikkeld. De binaire data moet nl. worden omgezet in iets waar JavaScript mee overweg kan.
Opmerking: Dit verhaal gaat over het lezen en in je site gebruiken, van een tekstbestand. Het opslaan van een tekstbestand is mogelijk, maar blijft buiten beschouwing.

Onderaan de vind je links naar voorbeelden. De code van de voorbeelden kun je downloaden om zelf te gebruiken en/of om zelf aan door te ontwikkelen.

Gebruik:

De code van voorbeeld 1 ziet er als volgt uit:
 

(Zet dit in de <BODY> op de plaats waar de knop "Kies Bestand" moet verschijnen.)

<input type="file" id="fileInput" accept=".txt">
<pre id="output"></pre>
 
<script>
document.getElementById('fileInput').addEventListener('change', function(event) {
const file = event.target.files[0];
if (file) {
  const reader = new FileReader();
  reader.onload = function(e) {
    const content = e.target.result;
    document.getElementById('output').innerText = content;
  };
  reader.readAsText(file);
}
});
</script>

De code van voorbeeld 2 ziet er als volgt uit:
 
(Zet dit in de <HEAD>).

<script>
  let CSVlines, CSVcells;
  function runProgram() { // Stuur de eerste regel naar het console, gevolgd door de datavelden van de eerste regel
  console.log(CSVlines[0]);
  CSVcells = CSVlines[0].split(";");
  console.log(CSVcells);
}
</script>

(Zet dit in de <BODY> op de plaats waar de knop "Kies Bestand" moet verschijnen.)

input type="file" id="fileInput" accept=".csv">
<script>
document.getElementById('fileInput').addEventListener('change', function(event) {
  const file = event.target.files[0];
  CSVfileName = file.name;
  if (file) {
    const reader = new FileReader();
    reader.readAsText(file);
    reader.onload = function() {
      const content = reader.result;
      CSVlines = content.toString().split("\n");
 
      runProgram();  // Hier wordt de array CSVlines verder bewerkt
    }
  }
});
</script>

Downloaden:
 
Druk op de knop: Download deze code  File: voorb777.zip, 1516 bytes.

 
terug

html-777; Laatste wijziging: 11 februari 2025