Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Schreiben einer Textdatei auf den Server

Geschrieben von: Christian Koller
Kategorie: ASP Grundlagen

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 Zugriffserlaubnis

Wenn 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 Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

CSVs aus MDBs leicht gemacht
Dateizugriff auf Netzlaufwerken
Dynamische Includes in ASP
Erstellen von XML-Dateien mit dem DOM
Fehlerbehandlung richtig eingesetzt
Lesen von Textdateien
Ver- und entschlüsseln von Texten mit PGP
Zippen und entzippen von Dateien

Links zu anderen Sites

MSDN Scripting

Wenn 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.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.