In ASP bedeutet FSO Dateisystemobjekt, ein Dateisystemobjekt.
Das Computerdateisystem, das wir manipulieren werden, bezieht sich auf den Webserver. Stellen Sie also sicher, dass Sie die richtigen Berechtigungen dafür haben. Im Idealfall können Sie einen Webserver auf Ihrem eigenen Computer einrichten, damit Sie problemlos Tests durchführen können. Wenn Sie unter Windows ausgeführt werden, probieren Sie Microsofts kostenlosen persönlichen Webserver -PWS aus.
FSO -Modellobjekte
Antriebsobjekt: Laufwerksobjekte zum Zugriff auf Festplatten oder Netzwerkantriebe
DateisystemObject -Objekt: Dateisystemobjekte zum Zugriff auf das Dateisystem des Computers
Ordnerobjekt: Ordnerobjekt zum Zugriff auf alle Eigenschaften eines Ordners
Textstream -Objekt: Text Stream -Objekt zum Zugriff auf Dateiinhalte
Sie können das obige Objekt verwenden, um alles auf Ihrem Computer zu tun, einschließlich Sabotageaktivitäten. Seien Sie also vorsichtig mit FSO. In einer Webumgebung ist es sehr wichtig, Informationen wie Benutzerinformationen, Protokolldateien usw. zu speichern Bietet eine leistungsstarke und einfache Möglichkeit, Daten effizient zu speichern.
FSO wird von Microsoft betrieben und ASP ist wahrscheinlich nicht mehr für Nicht-Windows-Systeme verfügbar.
Wie benutzt ich FSO?
Um FSO zu verwenden, um alle Arbeiten auszuführen, erstellen Sie zunächst ein Objekt, der Code ist wie folgt:
| < %Set fso = server.createObject (scripting.FilesSystemObject) % > |
Dadurch werden FSO erstellt und die Variable FSO zugewiesen. Hier können wir FSO.Method oder FSO.Property verwenden, was im folgenden Beispiel zu sehen ist.
Das FSO -Modell befindet sich in einer Skript -Laufzeit -DLL -Datei von Microsoft, nämlich Scrrun.dll. Sie können diese DLL -Datei in jeder Anwendung verweisen, z. B. MS Access, Word. Das heißt, es ist nicht nur darauf beschränkt, es in ASP anzuwenden.
Hier finden Sie eine kurze Liste von FSO -Methoden:
| FSO -Methode | |
| Kopie | Kopieren Sie eine oder mehrere Dateien auf einen neuen Pfad |
| CreateTextfile | Erstellen Sie eine Datei und geben Sie ein Textstream -Objekt zurück |
| DeleteFile | Löschen Sie eine Datei |
| Opentextfile | Öffnen Sie die Datei und geben Sie das Textstream -Objekt zum Lesen oder Anhängen zurück |
Wenn Sie die vollständigen FSO -Methoden und Eigenschaften kennen möchten, lesen Sie bitte Microsoft MSDN. Sehen wir uns unten einige Beispiele an.
Angenommen, Sie möchten ein einfaches Gästebuch erstellen, in dem Sie eine Datenbank erstellen können, in der Sie Benutzerinformationen speichern. Wenn Sie FSO zum Speichern von Informationen jedoch sparen, sparen Sie Zeit und Geld, wenn die Stromversorgung der Datenbank nicht erforderlich ist. Und einige ISPs können Datenbankanwendungen im Web einschränken.
Angenommen, Sie haben einige Benutzerinformationen in einem Formular gesammelt. Hier finden Sie einen einfachen Formular HTML -Code:
| < html > < Körper > < Formelaktion = FormHandler.asp -Methode = Post > < Eingabetyp = Textgröße = 10 Name = Benutzername > < Eingabetyp = Textgröße = 10 Name = Homepage > < Eingabetyp = Textgröße = 10 Name = E -Mail > < /Form > < /Körper > < /html > |
Schauen wir uns den Code an, der Formulare in FormHandler.asp verarbeitet:
| < % 'Holen Sie sich Formularinfo Strname = Request.form (Benutzername) Strhomepage = Request.Form (Homepage) Stremail = Request.form (E -Mail) 'Erstellen Sie das FSO -Objekt Setzen Sie fso = server.createObject (scripting.FilesystemObject) |
Bisher ist nichts Neues, als den Wert des Formularfelds zu erhalten und Variablen Werte zuzuweisen. Ein interessanter Teil erscheint unten - schreiben Sie eine Datei:
| Path = C: Emp est.txt Forreading = 1, Forwriting = 2, founting = 3 'Öffnen Sie die Datei set File = fso.opentextFile (Pfad, Forppending, True) 'Schreiben Sie die Informationen in die Datei Datei.Write (Strname) & VBCRLF Datei.Write (strhomepage) & vbcrlf Datei.Write (Stremail) & VBCRLF 'Schließen und aufräumen Datei.close Datei festlegen = nichts fso = nichts setzen |
Erinnern Sie sich daran, dass die OpenTextFile -Methode ein Textstream -Objekt zurückgibt, das ein weiteres Objekt im FSO -Modell ist. Das Textstream -Objekt zeigt Möglichkeiten zur Manipulation von Dateiinhalten wie das Schreiben, Lesen und Überspringen einer Zeile. Die VB Constant VBCRLF erzeugt einen neuen Charakter.
True ist im Befehlsparameter von OpenTextFile definiert, der dem System mitteilt, dass, wenn die Datei nicht vorhanden ist, es erstellen. Wenn die Datei nicht vorhanden ist und der wahre Parameter nicht definiert ist, tritt ein Fehler auf.
Gehen Sie nun zum Verzeichnis C: EMP, Open Test.txt, und Sie können die folgenden Informationen sehen:
| Name des Benutzers Benutzer -Homepage E -Mail des Benutzers |
Natürlich können diese Wörter durch alles ersetzt werden, was in das Formular eingegeben wurde.
Jetzt werden einige Benutzerinformationen in einer Datei wie einer einfachen Datenbank gespeichert. Angenommen, es gibt einen Benutzer, der alle Besucher kennen und die entsprechenden Teile von den registrierten Informationen trennen möchte, da es keine strukturierte Spalte wie eine Datenbank gibt.
Wir wissen, dass in der erstellten Datei Zeile 1 der Benutzername ist, Zeile 2 ihre Homepage und Zeile 3 ihre E -Mail -Adresse. Die registrierten Benutzer speichern ihre Informationen auch in dieser Struktur, sodass alle drei Zeilen die Registrierungsinformationen eines Benutzers enthalten. Wenn Sie dies wissen, können Sie den folgenden Code schreiben, um die Informationen anzuzeigen:
| < % 'Erstellen Sie das FSO -Objekt Setzen Sie fso = server.createObject (scripting.FilesystemObject) Path = C: Emp est.txt 'Öffnen Sie die Datei set File = fso.opentextFile (Pfad, 1) < - für Lektüre |
Analysieren Sie als nächstes jede Zeile und formatieren Sie die Daten:
| Tun Sie bis Datei.atendofStream Antwort.Write (Name: & Datei.readline &) Antwort.Write (Homepage: & Datei.readline &) Antwort.Write (E -Mail: & Datei.readline & < P >) Schleife 'Schließen und aufräumen Datei.close Datei festlegen = nichts fso = nichts setzen %> |
Dies ist nur eine sehr einfache Ausgabe, aber Sie können die Tabellen- oder DHTML -Forminformationen entsprechend der Situation einbeziehen.
Wenn die Datei korrekt erstellt und geschrieben wurde, wird in der obigen kleinen Schleife die Informationen aller in der Datenbank ordnungsgemäß aufgeführt. Die Readline -Methode liest 1 Inhaltszeile, bis eine neue Zeile auftritt, und der nachfolgende Readline -Anruf wird in der nächsten Zeile gelesen. AtendofStream ist eine Eigenschaft eines Textstream -Objekts, das uns mitteilt, wann wir auf den Schwanz einer Datei stoßen.
Nehmen wir an, dass wir aus irgendeinem Grund die Datei nicht richtig bilden, wenn ein Benutzer nur 2 Informationszeilen anstelle von 3 Zeilen hat, werden einige Fehler auftreten. Unsere Schleife hier ruft die nächsten drei Informationszeilen in der Datei ab.
| Serverobjektfehler 'ASP 0177: 800A003E' |
Stellen Sie daher sicher, dass Sie einen Fehlerbehandlungscode hinzufügen, um zu verhindern, dass unnötige Zeilen in die Datei eingefügt werden, oder die erforderlichen Zeileninformationen fehlen.
Das Grundwissen wird oben diskutiert, und dann wird das Thema Berechtigungen erörtert. FSO wird mit dem Benutzerkonto ausgeführt, das es erstellt hat. Mit anderen Worten, wenn jemand über das Internet auf Ihre Seite zugreift, erstellt dieses Internetkonto FSO. Wenn Sie sich als Administrator beim Computer anmelden und sich bei der Seite anmelden, erstellt das Administratorkonto das FSO. Dies ist sehr wichtig, da ein bestimmtes Konto bestimmte Berechtigungen hat und FSO einige Berechtigungen erfordert, um Funktionen vollständig auszuführen.
Internetkonten (IUSER_MACHINENNAME, MACHINNAME ist der Name des Servers) haben im Allgemeinen nur Lesen von Berechtigungen, was bedeutet, dass der Benutzer nicht in die Guestbook -Datei schreiben kann. Es gibt jedoch mehrere Optionen, um dieses Problem zu umgehen.
Zunächst ist es auch sehr schwierig und erfordert, dass Benutzer sich beim Server anmelden, bevor sie das Gästebuch ausfüllen. Der wichtigste Punkt des Gästebuchs besteht jedoch darin, Informationen von anonymen Benutzern zu sammeln. Wenn der Benutzer sich anmelden, müssen Sie wissen, wer er ist. Überspringen Sie diese Option und sehen Sie die nächste.
Die zweite Methode besteht darin, ein Verzeichnis oder eine Datei zu erstellen, und der Benutzer von IUSER_Machinenname hat Schreibberechtigungen. Dies kann einige potenzielle Sicherheitsanfälligkeiten eröffnen, da jeder, der das richtige Verzeichnis kennt und einige Webkünste verfügt, Inhalte auf dem Server ausfüllen kann. Dies ist ein ernstes Tabu. Sie müssen also bestätigen, dass die Informationen dieser beschreibbaren Verzeichnisse an der verborgenen Stelle gespeichert werden und diese Verzeichnisse so weit wie möglich außerhalb der Webverzeichnisstruktur festgelegt werden (z. B. unter Windows ist dies ein Verzeichnis, das sich nicht im Inetpub -Verzeichnis befindet).
Sie denken vielleicht: OK, jetzt weiß ich, wie man in die Datei schreibt. Aber können wir mehr tun? Versuchen wir, eine Suchfunktion für die Website zu erstellen.
Der Schlüssel zum Aufbau einer Suchmaschine ist die Rekursion. Schreiben Sie hauptsächlich einen Code, um nach Dateien im Verzeichnis zu suchen, und führen Sie denselben Code in allen Verzeichnisschleifen aus. Da es nicht möglich ist zu bestimmen, wie viele Unterverzeichnisse sich insgesamt befinden, muss der Suchcode immer wieder ausgeführt werden, bis er fertig ist. Rekursive Anrufe sind sehr gut!
Erstellen wir eine Suchseite. Angenommen, es wurde ein HTML -Formular erstellt, bei dem der Benutzer eine Suchzeichenfolge eingibt.
| Dimer Objfolker Dim StrsearchText Dimer objfso stresearchText = request.form (searchText) < - die Suchzeichenfolge 'Erstellen Sie die FSO- und Ordnerobjekte Setzen Sie fso = server.createObject (scripting.FilesystemObject) Setzen Sie objfolker = objfso.getFolder (server.mappath (/)) Suche nach Objfolker |
Der obige Code initialisiert einfach die Variablen, und die Suchfunktion führt die Suchfunktion aus, die wie folgt beschrieben wird:
| Funktionsuche (Objfolker) Dimer Objsubfolder 'Schaufeln Sie jede Datei in der aktuellen Datei durch Ordner Für jede objfile in objfolder.files Setzen Sie ObjTextStream = objfso.opentextFile (objFile.Path, 1) < - zum Lesen 'Lesen Sie den Inhalt der Datei in a Variable strFilecontents = objTextStream.readall 'Wenn sich die Suchzeichenfolge in der Datei befindet, dann Schreiben Sie einen Link 'zur Datei Wenn Instrument (1, Strfilecontents, StrsearchText, 1) dann Response.write < a href =/ & objFile.name & _ > & objfile.name & < /a >< br > bolfilefound = true Ende wenn objtextstream.close Nächste 'Hier ist der Rekursionsteil - für jeden „Unterordner in diesem Verzeichnis, führen Sie die Suchfunktion erneut aus Für jeden objsubfolder in objfolker.subfolders Suchen Sie Objsubfolder Nächste Endfunktion |
Um eine Datei öffnen zu können, benötigt FSO den tatsächlichen Dateipfad und nicht den Webpfad. Zum Beispiel ist es C: Inetpubwwwroot empiIndex.html, nicht www.enfused.com/temp/index.html oder /temp/index.html. Um den letzteren in erstere umzuwandeln, verwenden Sie Server.Mappath (Dateiname), Dateiname, um den Webpfadnamen darzustellen.
Der obige Code wird in jedem Unterverzeichnis des Ordners unter dem von Ihnen angegebenen Erstverzeichnis ausgeführt, in dem sich das erste Verzeichnis auf das Web -Root -Verzeichnis bezieht/. Öffnen Sie einfach jede Datei im Verzeichnis, um festzustellen, ob sie die angegebene Zeichenfolge enthält.
Beachten Sie, dass mit zunehmender Anzahl von Dateien und Unterverzeichnissen die Zeit für die Suche zunimmt. Wenn Sie schwere Sucharbeiten benötigen, wird Ihnen empfohlen, andere Methoden wie den Indexserver -Indexserver von Microsoft anzunehmen.
Zu diesem Zeitpunkt haben Sie möglicherweise ein gutes Verständnis von FSO. Schauen wir es uns tiefer an, um komplexere Probleme zu lösen.
Zunächst möchten Sie die Datei umbenennen. Um alle Dokumente im Auge zu behalten, möchten Sie sie so umgeben, dass sie einzigartig sind, damit sie leicht vom System unterschieden werden können. Leider erlaubt FSO keine einfachen Operationen von Dateinamenänderungen, sodass wir diese ändern müssen.
| < % 'Erstellen Sie das FSO -Objekt Setzen Sie fso = server.createObject (scripting.FilesystemObject) Path = C: Emp est.txt StrDate = ersetzen (Datum (), /,) strdir = c: inetpubwwwrootArticles & strdate StrnewFileName = Hour (jetzt) & _ & Minute (jetzt) & _ & & _ & Zweiter (jetzt) & .html 'Öffnen Sie die alte Datei set File = fso.opentextFile (Pfad, 1) < - zum Lesen Strtext = Datei.readall Datei festlegen = nichts 'Überprüfen Sie und/oder erstellen Sie den Ordner wenn nicht Setzen Sie f = fso.createFolder (server.mappath (strdir)) anders Setzen Sie f = fso.getFolder (server.mappath (strdir)) Ende wenn 'Erstellen und schreiben Sie eine neue Datei set File = fso.createTextFile (F.Path & & StrnewFileName) Datei.Write (Strtext) Setzen Sie f = nichts Datei.close Datei festlegen = nichts 'Löschen Sie die alte Datei fso.deleteFile (Path & & rst (Dateiname) & i) 'Aufräumen fso = nichts setzen %> |
Der Mangel an FSO -Fähigkeiten ist hier zu einem Vorteil geworden, und wir können jeweils 2 Schritte ausführen. Öffnen Sie zunächst die Datei und lesen Sie den Inhalt der Datei. Nehmen wir hier an, hier möchten Sie einen eindeutigen Ordner und eine eindeutige Datei erstellen, um den Artikel zu speichern. Da sich der Pfad zum Ordner jeden Tag ändert, muss er zuerst überprüft werden, ob der Ordner bereits existiert und ob er nicht existiert, erstellen Sie ihn. Dies geschieht im Snippet. Nehmen Sie dann diesen Weg und erstellen Sie eine neue Datei. Nachdem die neue Datei erstellt wurde, löschen Sie die alte Datei, die über fso.deleteFile durchgeführt wird.
Diese 2 Schritte sind: Benennen Sie die Datei um und verschieben sie dann in ein geeigneteres Verzeichnis. Beachten Sie, dass Sie hier auch mehr Vorgänge in Dateien durchführen können, z. B. das Bearbeiten von Inhalten, bevor Sie in eine neue Datei schreiben.
FSO hat einige Schwächen - zum Beispiel ist es schwierig, binäre Dateien zu verarbeiten, die Word -Dokumente, Dateien in vielen grafischen Formaten und einige andere Dateien enthalten. Sie können diese Dateien jedoch weiterhin auf andere Weise manipulieren - verschieben Sie sie, löschen Sie sie usw. Alles, was Sie nicht tun können, ist zu öffnen oder zu schreiben.
Eine weitere Einschränkung ist das Problem der Dateilänge. Wenn einige Inhalte sofort gelesen und geschrieben werden, werden alle Informationen im Speicher gespeichert - je mehr Inhalte, desto mehr Speicher verbraucht es. Dies wird jeden Job verlangsamen. Wenn Sie daher sehr große Dateien oder eine große Anzahl kleiner Dateien betreiben müssen, sollten Sie die Dateien in kleine Stücke teilen und den Speicher häufig beseitigen. Die Einbeziehung von Anwendungen in COM -Objektkomponenten kann auch die Geschwindigkeit des Programms erheblich verbessern.
In ähnlicher Weise können Sie FSO nicht verwenden, um Berechtigungen und Datei- und Ordnereigenschaften zu verwalten. Diese Methode wird häufig in CGI und Perl verwendet, aber leider gibt es keine zufriedenstellende Möglichkeit, sie mit FSO zu implementieren.
Was kann ich noch mit FSO machen?
Es gibt viele großartige Merkmale in FSO, aber viele Menschen merken es nicht. Diese Funktionen werden oft entdeckt, nachdem Sie das Gefühl haben, dass es schwierig ist, etwas zu tun.
Hier sind einige dieser uneinheitlichen, aber sehr coolen Funktionen:
FSO -Funktionen, die selten verstanden werden
GetPecialFolder -Methode gibt den Pfad in einen bestimmten Windows -Ordner zurück: Windows -Verzeichnis; Erfordern Sie die GetAbSolutepathname -Methode Gibt den absoluten Pfad zum Ordner (ähnlich wie Server.Mappath) beim Speichern temporärer Daten zurück.
Zum Beispiel wird FSO.getabsolutepathname (Region) ein Ergebnis ähnlich wie folgt zurückgeben: C: mydocsmyFolder Oxid
GetExtensionName -Methode gibt die Erweiterung des letzten Teils des Pfades zurück (z. B. fso.getEXTensionName (c: docs est.txt) wird txt zurückgegeben) getBaseName und GetParentFolder -Methoden gibt den übergeordneten Ordner des letzten Teils des Pfades zurück
(Zum Beispiel: FSO.GetParentFolder (C: docsmydocs) gibt 'DOCS' zurück.) Die Eigenschaft gibt eine Sammlung aller lokal verfügbaren Laufwerke für die Einrichtung einer ressourcenbrowserähnlichen Benutzeroberfläche zurück.
Bei Verwendung der oben genannten Funktionen erstellen Sie am besten einen Code für die Fehlerbehandlung. Denn wenn die erforderlichen Parameter nicht vorhanden sind, werden problematische Informationen generiert.
Zusammenfassen
Wie wir gesehen haben, ist FSO sehr nützlich, und was wir hier vorstellen, ist nur die Spitze des Eisbergs. Sie können FSO verwenden, um leistungsstarke Anwendungen zu erstellen und einfach viele Aufgaben auszufüllen.