Schreiben einer Textdatei auf den Server
Geschrieben von: Christian Koller Wie schon in den Artikeln Lesen von Textdateien und Dynamische Includes in ASP beschrieben, kann man von einer ASP-Seite aus den Inhalt einer Textdatei lesen und in Variablen speichern. Dazu benutzt man die Funktionalität, die das FileSystemObject Objekt bietet. Mit Hilfe dieses Objektes kann man Dateien und Dateiattribute lesen, aber auch Text in eine Datei schreiben oder an eine Datei anhängen. Das folgende ASP-Listing zeigt, wie einfach es prinzipiell ist, eine Textdatei auf den Server zu schreiben:
<% ' FileSystemObject objFs oeffnen Set objFs= CreateObject("Scripting.FileSystemObject") ' Dateiname festlegen strDateiname = Server.MapPath("/testdatei.txt") ' Einen Textstream (objTextStream) zur Textdatei oeffnen Set objTextStream = objFs.CreateTextFile(strDateiname, True) ' Inhalt fuer Datei in String strWriteString speichern: strWriteString = "Text fuer die Datei" ' String in Datei schreiben: objTextStream.Write strWriteString ' Objekte schliessen objTextStream.Close Set objTextStream = Nothing Set objFs = Nothing Response.Write "Der folgende Inhalt wurde in die Datei " Response.Write strDateiname & " geschrieben:<BR>" Response.Write Replace(Server.HTMLEncode(strWriteString) , _ vbCrLf,"<BR>" & vbCrLf) %> Der VBScript Code in diesem Listing erzeugt eine Instanz des FileSystemObject und speichert es in der Variable objFs. Danach wird der volle physikalische Pfad der zu erstellenden Datei in der Variablen strDateiname gespeichert. Ein Beispiel für eine gültige Dateiangabe wäre etwa C:\Inetpub\wwwroot\. Die Datei selbst wird mit der Methode CreateTextFile des FileSystemObject Objektes angelegt, wobei der erste Parameter den Pfad der zu erstellenden Datei angibt, und der zweite Parameter (True oder False) angibt, ob eine bereits bestehende Datei überschrieben werden soll. Die CreateTextFile Methode gibt ein TextStream Objekt zurück, das man benützt, um Text in die Datei zu schreiben. Der Schreibvorgang selbst wird mittels der Write Methode des TextStream Objektes durchgeführt. Der Parameter dieser Anweisung ist der Textstring, der als Inhalt in die Datei geschrieben wird. Man kann die Write Methode mehrmals aufrufen, um auf diese Weise Text Stück für Stück in die Datei zu schreiben. Durch die Write Methode wird allerdings kein Zeilenumbruch in die Datei geschrieben - einen Zeilenumbruch muß man explizit durch vbCrLf angeben. Alternativ zu Write kann man auch die WriteLine Methode verwenden, die nach dem Schreiben des übergebenen Textstrings automatisch einen Zeilenumbruch hinzufügt. Probleme mit der ZugriffserlaubnisWenn man das obige Listing auf einem Webserver laufen lässt, so erhält man oftmals eine Fehlermeldung mit einer ähnlichen Aussage wie der folgenden:
Microsoft VBScript runtime error '800a0046' Permission denied /file1.asp, line 9 Dieses Permission denied oder Zugriff verweigert bedeutet nichts anderes, als daß der Benutzer-Kontext (User-Kontext), in dem diese ASP Seite läuft, keine Erlaubnis zum Schreiben einer Datei besitzt. Dies sollte die standardmäßige Einstellung auf einem Internet Information Server sein. Der Benutzername, in dessen Kontext anonym abgefragte ASP Seiten laufen, ist IUSR_Computername, also zum Beispiel IUSR_RunningMan - wenn der Server RunningMan heißt. Verlangt man von den Benutzern, daß Sie Benutzername und Kennwort beim Seitenzugriff eingeben (die "Standardloginbox" des Internet Explorer oder Netscape Navigators), so läuft die Seite dann im Kontext dieses NT Useraccounts. Wenn man auf einem fremden Webserver hostet, so muß man den Betreiber also bitten, für den IUSR_Computername Account die Lese-/Schreibrechte für den Ordner des Root-Directories des Webservers (oder die entsprechenden Ordner) zu setzten. (Dies ist nur notwendig, wenn die Ordner mit dem NTFS Filesystem arbeiten.) Um auf dem eigenen Webserver die Rechte umzustellen klickt man mit der rechten Maustaste auf den entsprechenden Ordner, wählt "Sicherheit" und stellt die entsprechenden Rechte ein. Auf einem PWS (Windows 9x) sollte dieses Problem im Allgemeinen nicht auftreten, da Windows 9x standardmäß keine Userrechte für Ordner kennt. Schlußbemerkung:Wie gezeigt wurde ist es verhältnismäßig einfach, aus einer ASP-Seite heraus eine Textdatei zu erzeugen und Text in eine Datei zu schreiben. Um sich die volle Funktionalität des FileSystemObject Objektes zu erschließen, empfiehlt sich ein Blick in die Dokumentation des IIS, des Platform SDK, oder der VBScript Dokumentation (zum Download bei Microsoft erhältlich). Download des CodesKlicken Sie hier, um den Download zu starten. Verwandte Artikel
CSVs aus MDBs leicht gemacht Links zu anderen SitesWenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |