Das Erstellen von Dateien aus dem Browser ist eine einfache Möglichkeit, Dateien von Clients an den Server zu übergeben. Aus dem dritten Browser Netscape und Microsoft können die meisten Browser Dateien vom Server hochladen, ohne dass Benutzer spezielle Zugriffsmethoden oder Software bereitstellen müssen.
Einige ASP -Komponenten sind für Dateien ausgelegt, zum Beispiel ::
Akzeptor posten
(Teil von Microsoft SiteServer),
ASPSMartUpload (Advantys),
AspUpload (Persistsoftware),
SA-FILEUPSOFTWARE-Kunstisanten)
Der Beginn dieses Artikels enthält Ihnen Informationen zum Erstellen solcher Komponenten, und diese Komponenten verwenden normalerweise VB, C ++ oder Java.
Das Problem dieser Komponenten besteht darin, dass sie eher Teil von dritten Teilprodukten als von Standard -ASP sind. Als dritte Party -Komponente muss die Installation auf dem Server installiert werden. Dies bedeutet, dass DLL auf dem Server kopiert und registriert werden muss. Die meisten Hosting -Systeme dürfen solche Einstellungen auf ihren Servern nicht ausführen, da Konfigurationsprobleme (insbesondere virtuelle Hosts) auftreten können. Der zweite Nachteil ist, dass die meisten von ihnen nicht frei sind.
Daher muss ich den VBScript -Code schreiben, um das Problem des Hochladens der Datei zu lösen. Dies ist keine unvermeidliche Wahl, da VBScript eine Skriptsprache ist, die nur den Datentyp der Varianten verwenden kann und nicht viele erstellte Funktionen für die Verwaltung von Binärdaten und Byte -Array bereitstellen kann.
Um den Hochladen zu verstehen, müssen wir zunächst wissen, dass die Daten mit dem HTTP -Protokoll vom Browser an den Server gesendet werden. Dies bedeutet, dass die Formulareinreichung von "Multipart/Form-Data" (Multi-Party/Format-Data) eingereicht wird.
Formular hochladen
Verwenden Sie unter normalen Umständen das HTML -Formular, um Daten vom Browser an den Server zu übergeben. Dieses Formular kann Textdomänen, Inspektionsfelder, Schaltflächen und Dateitypsteuerung von hochgeladenen Dateien enthalten. Der Benutzer füllt und unterbreitet diese Tabelle dem Server mit seinen eigenen Daten.
Das Attribut "EnableType" im Tabellenelement gibt den vom Tabellendatensatz codierten Inhaltstyp an, der dem Server codiert ist. Der Standardwert des EngeTPE-Attributs lautet "Anwendung/x-www-form-rencoded". Bei der Übertragung einer großen Menge Text an den Server, einschließlich Daten mit Nicht-ASCII-Zeichen oder Binärnummern, kann dieser Standardtyp nicht kompetent sein. Zu diesem Zeitpunkt sollte der Inhaltstyp "Mehrfach-/Formdaten" verwendet werden, wenn die Datei das Formular hochladen.
Eine "Multipart/Form-Data" -Folaturen enthält eine Reihe von Komponenten.
Ein Inhaltsdispositionskopf, der Wert von "Formdaten";
Für eine Dateitypsteuerung kann ein Teil weitere Informationen enthalten:
Dateiname (Dateiname) Attribute des ursprünglichen Pfades und des Dateinamens werden auf dem Client festgelegt;
Befolgen Sie den Kontrollbinär- oder Textinhalt hinter diesen Köpfen.
Das folgende Beispiel veranschaulicht die Codierung von "Multipart/Form-Data".
Wenn dieses Formular eingereicht wird, können Sie diese Anfragen auf dem Server lesen:
--------------------------------- 7CF87224D2020A
Inhaltsdisposition: Form-Daten; name = "E-Mail"
[E -Mail geschützt]
--------------------------------- 7CF87224D2020A
Inhaltsdisposition: Form-Data;
Inhaltstyp: Image/PJPEG
--------------------------------- 7CF87224D2020A
Inhaltsdisposition: Form-Daten;
Abfrage einreichen
--------------------------------- 7CF87224D2020A--
Wenn dieser Inhalt als Antwort auf den Client übertragen wird, wird er angezeigt. Request.BinaryRead and Response.BinaryWrite -Methode Lesen und Schreiben von Binärdaten.
< / Prozent
Antwort.BinaryWrite (Request.BinaryRead (request.totalbytes))
%>
Sie können die Teilung jedes Teils der Antwort sehen:
--------------------------------- 7CF87224D2020A
Die letzte Grenzlinie folgt ' -'.
Jede Kontrolle hat eine Inhaltsdisposition. Die Namensattributerkennung wird durch die HTML -Tabelle gesteuert (E -Mail, Blob und Eingabetaste. Für einen Dateitypsteuerung (Blob),
Der Dateiname ist auch Teil des Head-Disposition-Headers, und der Header vom Typ Inhalt gibt den Inhaltstyp von Binärdaten an.
Hochgeladenes Skript
Alle oben genannten Inhalte müssen verknüpft sein. Dies ist in VB oder C ++ sehr offensichtlich, da es dafür viele Objekte und Methoden gibt. In VBScript müssen einige von der Sprache bereitgestellte Funktionen verwendet werden, und das Problem der in VBScript verwendeten Dual -Byte -codierten Variablenzeichenfolge muss gelöst werden.
VBSCIPT -Funktion
Die ursprünglichen Daten sind ein binäres Format, daher muss die VBS -Funktion zur Verwaltung von Binärdaten verwendet werden. Da wir die Originaldaten als Zeichenfolgen von Bytes betrachten, sind Midb-, Instrb- und LenB -Funktionen nützlich. Vermeiden Sie jedoch die klassische Zeichenfolge von VBScript, da es sich um eine Dual -Byte -kodierte Zeichenfolge handelt, die nicht geeignet ist, sich in einzelne Bytes zu zersetzen.
Dies sind die einzigen Funktionen, mit denen Bytes in der VBSScript -Funktion zerlegt werden. Eine Methode ist auch erforderlich, um eine doppelte codierte Zeichenfolge aus den zerlegten Daten zu erhalten, damit Sie die Zeichenfolge in der VBScript -Codierung verwenden können. Um die Zeichenfolge als unabhängige Variable in InstrB zu verwenden, ist eine Funktion erforderlich, um die Dual -Byte -Zeichenfolge in eine einzelne Byte -Zeichenfolge umzuwandeln.
Für mich schrieb ich zwei Funktionen, GetString () und GetByTestring () und erklärte es später.
Struktur
Die zersetzten Daten werden im VBScript Dictionary -Objekt gespeichert. Das Wörterbuchobjekt ist das Hash -Tabellenobjekt, das (Schlüssel, Element) speichert. Es ist Teil von VBScript und ASP2.0.
Definieren Sie das erste Wörterbuchobjekt "UploadRequest". Dieses Objekt enthält alle von der hochgeladenen Tabelle eingereichten Steuerelemente. Der Schlüssel ist die Steuerung des Steuerelements, und Element sind die im Objekt enthaltenen Steuerungsinformationen:
"ControlName1", Dictionary Control1
"ControlName2", Wörterbuchkontrolle2
Die Darstellung eines kontrollierten Wörterbuchobjekts enthält das folgende (Schlüssel, Element) Paar:
"Wert", Zeichenfolge oder binärer Inhalt
"Dateiname", Name der hochgeladenen Datei
"ContentType", ContentType der hochgeladenen Datei
Wenn Sie diese kombinieren, gibt es die folgenden Beispiele:
UploadRequest: "E -Mail", UploadControl 1: "Wert", [E -Mail geschützt]
"Blob", UploadControl 2: "Dateiname", c: /upload/200902/file.gif "contentType":
Bild/GIF "Wert": Gif89ai?
Dieses Objekt ist sehr nützlich für den zukünftigen Zugriff und die Verwendung von Daten.
abbauen
Hier ist der Code für Zerlegung, Lesen und Aufzeichnungsregelungsteuerung. Dieser Prozess wird mit dem Programm "BuildUploadRequest" abgeschlossen.
sub BuildUploadRequest (RequestBin)
Zunächst müssen Sie die Trennlinie finden.
'Holen Sie sich die Grenze posbeg = 1 posend = instrb
Bou
|||