anaboe.net

Textdatei lokal öffnen und verarbeiten (ActiveX)

Zielstellung

Sie möchten eine Textdatei auf dem Clientcomputer öffnen und ihren Inhalt anzeigen.

JScript - Code

function GetLine() {
  var tFile = "c:\\verzeichnis\\test.txt";
  var fso, f, r;
  var ForReading = 1;
  var ForWriting = 2;
  try {
    fso = new ActiveXObject("Scripting.FileSystemObject");
  }
  catch(e) {
    document.all.headline.innerText = "Hinweis";
    document.all.nachricht.innerText = "Sie haben die Ausf?hrung von ActiveX-Controls entweder deaktiviert oder durch Ablehnen in der Eingabeaufforderung verhindert.";
    return;
  }
  try {
    f = fso.OpenTextFile(tFile, ForReading);
  }
  catch(e) {
    document.all.headline.innerText = "Hinweis";
    document.all.nachricht.innerText = "Die Datei "+tFile+" konnte nicht geoeffnet werden. ";
    document.all.nachricht.innerText += "Stellen Sie sicher, dass sich die Datei unter dem angegebenen Pfad befindet."
    return;
  }
  try {
    r = f.ReadAll();
  }
  catch(e) {
    document.all.headline.innerText = "Hinweis";
    document.all.nachricht.innerText = "Die Datei "+tFile+" ist leer.";
    f.Close()
    return;
  }
  f.Close();
  document.all.headline.innerText = "Inhalt von "+tFile;
  document.all.nachricht.innerText = r;
}

HTML-Code

<html>
<head>
<title>Testseite</title>
<script language="JScript" src="auslesen.js"></script>
</head>
<body onload="GetLine()">
<h1 id="headline">Demonstration</h1>
<p id="nachricht">Suche nach Textdatei ...</p>
</body>
</html>

Erläuterungen

Es kommt das so genannte FSO („File Scripting Object“) zum Einsatz, auf das mit Hilfe eines ActiveX-Controls zugegriffen wird. Deshalb funktioniert der JScript-Code nur bei eingestellter Sicherheitsstufe „Niedrig”. Vom Einsatz in einer Internetanwendung rate ich dringend ab, da die wenigsten Benutzer mit solch sorglosen Sicherheitseinstellungen surfen, Probleme sind also vorprogrammiert. Wenn Sie Einfluss auf die Clientkonfiguration haben (z.B. lokal oder in einem Intranet), können Sie das Script jedoch problemlos einsetzen.