Der Einsatz von WEB-Technologie zur Implementierung eines Managementsystems mit einer B/S-Struktur (Browser/Server) ist der Entwicklungstrend der Büroautomation. Auf WEB-Technologie basierende Managementsysteme haben sich in den letzten Jahren rasant weiterentwickelt, da sie von Benutzerplattformen unabhängig sind und Informationen schnell und effizient erfassen, verarbeiten und veröffentlichen können. Die ASP-Technologie hat sich aufgrund ihrer hohen Entwicklungseffizienz, guten Interaktivität und starken Sicherheit nach und nach zum bevorzugten Werkzeug für die Entwicklung von Managementsystemen entwickelt.
Viele WEB-basierte Anwendungen umfassen Datei-Upload-Vorgänge. Zu den gängigen Datei-Upload-Technologien gehören: basierend auf dem HTTP-Protokoll; basierend auf Datei-Upload-Komponenten, die von VB (oder DELPHI und anderen Programmiersprachen usw.) entwickelt wurden; Diese Methoden erfordern im Allgemeinen, dass Programmierer gleichzeitig die WEB-Technologie, Datenbanktechnologie oder CGI-Technologie oder Komponententechnologie beherrschen, und stellen höhere Anforderungen an Programmierer. Die Verwendung der ASP-Technologie zur direkten Implementierung der Datei-Upload-Funktion, die in diesem Artikel vorgestellt wird, erfordert lediglich die Beherrschung einer einzigen ASP-Technologie durch Programmierer, was die Programmierschwierigkeiten erheblich verringert.
Vergleich mehrerer Datei-Upload-Technologien
1. Basierend auf dem HTTP-Protokoll.
Bei dieser Methode müssen Programmierer Software von Drittanbietern wie DELPHI, VB usw. verwenden, um zunächst die HTTP-Protokollprogrammierung in der Anwendung durchzuführen und dann den Inhalt der Datei zu verpacken Hochzuladen im Format des HTTP-Protokolls und sendet schließlich eine Upload-Anforderungsnachricht an den WEB-Server, um das Hochladen der Datei zu erreichen. Da DELPHI und VB keine vollständigen WEB-Netzwerkprogramme schreiben können und nur kleine WEB-Anwendungen schreiben können, wird diese Methode nur für Netzwerkanwendungen mit eingeschränkten Funktionen verwendet.
2. Datei-Upload-Komponente, die auf Basis von VB (oder DELPHI usw.) entwickelt wurde.
Diese Methode verwendet VB (oder DELPHI usw. Programmiersprache), um ASP-Serverkomponenten zu entwickeln, um bestimmte Datei-Upload-Dienste zu implementieren. Es verwendet zunächst die ASP-Formularfunktion, um Dateien (Binärformat) vom Client auf den Server hochzuladen, und verwendet dann von VB entwickelte Komponenten, um die Binärdateien in Dateien zu verarbeiten, die normal gelesen und geschrieben werden können. Diese Methode erfordert, dass Programmierer nicht nur die ASP-Sprache beherrschen, sondern auch Sprachen von Drittanbietern wie VB für die Komponentenprogrammierung verwenden, was die Schwierigkeit der Entwicklung erhöht.
3.
Diese Methode ähnelt der vorherigen Methode, die auf Datenbanktechnologie basiert. Der Unterschied liegt in der Verarbeitung hochgeladener Binärdateien. Es verwendet eine Datenbank zum Speichern von Binärdateien. Sowohl kleine als auch große Datenbanken bieten Datentypen zum Speichern von Binärdaten. Speichern Sie die Daten einfach in den entsprechenden Feldern in der Append Chunk-Methode. Obwohl diese Methode einfach und machbar ist, führt sie zu einer großen Verschwendung von Datenbankspeicherplatz und verringert die Datenzugriffsgeschwindigkeit, und die Datei kann nur in der Datenbankumgebung hochgeladen werden. große Unannehmlichkeiten verursachen.
Beispielanalyse:
Die Verwendung der ASP-Technologie zur direkten Implementierung der Datei-Upload-Funktion erfordert jedoch nur die Beherrschung einer einzigen ASP-Technologie durch den Programmierer, was
die Programmierschwierigkeiten erheblich verringert. Im Folgenden stellen wir die Verwendung dieser Methode anhand eines Beispiels vor.
1. Formular zum Hochladen von Dateien
Zuerst müssen Sie ein Formular schreiben, das die Funktion zum Hochladen von Dateien bereitstellen kann. Das Programm lautet wie folgt:
<Form action="upload.asp" method=post enctype="multipart/form-data">
Datei hochladen:<Eingabetyp=Dateiname=Datei1><br>
<input type=submit name=upload value="Upload">
</form>
Unter anderem wird der Parameter enctype verwendet, um die MIME-Kodierungsmethode des Formulars festzulegen. Beim Hochladen einer Datei (oder eines Textfelds) muss dessen Attribut auf „multipart/form-data“ gesetzt werden. asp ist die Serverseite. Das ASP-Programm, das den empfangenen Binärdateistream verarbeitet, wird später in diesem Artikel vorgestellt.
2. Analyse des Upload-Dateiformats
Bevor wir die Datei verarbeiten, müssen wir zunächst das spezifische Format der hochgeladenen Datei verstehen. Wir können ihren Binärcode anzeigen, indem wir das folgende einfache ASP-Programm schreiben:
<%.
filesize=Request.TotalBytes 'Ermitteln Sie die Größe der hochgeladenen Datei
filedata=Request.BinaryRead(filesize) 'Holen Sie sich die Binärdaten der hochgeladenen Datei
Response.BinaryWrite filedata 'Binärdaten im Browser anzeigen
%>
Analysieren Sie den Binärcode der im Browser angezeigten hochgeladenen Datei und stellen Sie fest, dass der Code aus vier Teilen besteht (wenn mehrere Dateien oder Textfelder gleichzeitig hochgeladen werden, werden die Codes in der Reihenfolge des Hochladens mit derselben Reihenfolge angeordnet Format) und der Inhalt jedes Teils ist durch Wagenrücklauf- und Zeilenvorschubsymbole getrennt:
1) Der erste Teil (Startmarke)
--------------------------7d329631b04d4
2) Teil 2 (Dateibeschreibung)
Content-Disposition: form-data; name="file1"; filename="C:Documents and SettingsAdministratorMy DocumentsInvitation.doc" Content-Type: application/msword
in Because können wir den Dateinamen und den absoluten Pfad der hochgeladenen Datei sowie den Dateityp ermitteln. Diese Informationen sind wichtig, um die Datei korrekt zu speichern.
3) Der dritte Teil (Dateiinhalt)
ist der binäre Inhalt der Datei, weggelassen.
4) Teil 4 (Endmarke)
--------------------------7d329631b04d4
Schauen wir uns den Inhalt von Teil 1 und Teil 4 an: „-- ---------------7d329631b04d4" (der Wert ist jedes Mal anders, wenn Sie ihn hochladen) spielt die Rolle eines Trennzeichens, Es markiert den Anfang und das Ende eines Datenelements (bei mehreren Uploads). In Bezug auf die zum Speichern der Datei erforderlichen Informationen müssen wir zunächst den Dateinamen aus dem „Dateinamen“ des zweiten Teils der Daten ermitteln, dann die Startposition der Datei korrekt lokalisieren und schließlich die ASP-Technologie verwenden um die Binärdatei unter ihrem ursprünglichen Dateinamen zu speichern. Wenn mehrere Inhalte (z. B. mehrere Textfelder und Dateien) gleichzeitig hochgeladen werden, werden sie auf die gleiche Weise verarbeitet. Jeder Teil des Inhalts ist im Trennzeichen enthalten, die Textfelder und Dateien werden jedoch auf leicht unterschiedliche Weise ausgedrückt Dies kann durch gezielte Analyse des Binärcodes erfolgen.
3. Verwenden Sie die ASP-Technologie, um die Dateispeicherung
und die Verarbeitung des Dateicodes zum Hochladen
zu implementieren. 1) Erhalten Sie den Trennzeichencode.
Aus der obigen Analyse wissen wir bereits, dass das Trennzeichen eine wichtige Rolle bei der Aufteilung mehrerer Datensegmente (einschließlich Textfeldern und verschiedener Dateitypen) spielt ). Wie bereits analysiert, erscheint das Trennzeichen vor dem ersten Wagenrücklauf- und Zeilenvorschubsymbol. Daher kann der Trenncode über das folgende Programm abgerufen werden:
<%
newline=chrB(13) & chrB(10) 'newline stellt das binäre Wagenrücklaufzeichen dar
filesize=Request.TotalBytes 'filesize ist die Größe der hochgeladenen Datei
filedata=Request.BinaryRead(filesize) 'filedata sind die Binärdaten der hochgeladenen Datei
Divider=leftB(filedata,clng(instrb(filedata,newline))-1) 'divider ist der Teiler
%>
Hinweis: Da alle Prozesse hier binäre Bytecodes sind, verwenden alle Funktionen ihre Binärversionen mit dem Zusatz „b“.
2) Erhalten Sie den Inhalt der Datei (oder des Textfelds)
(1) Vorbereitende Funktion (Binärzeichenfolge in Zeichenfolge konvertieren)
Der Inhalt der hochgeladenen Datei muss nicht den Konvertierungsprozess von Binärzeichenfolge in Zeichenfolge durchlaufen und kann direkt gespeichert werden . Wenn Sie jedoch den Inhalt des Textfelds oder den Namen der Datei extrahieren müssen, müssen Sie eine Konvertierung durchführen. Daher ist es notwendig, eine universelle Konvertierungsfunktion zu schreiben, die für chinesische Schriftzeichen geeignet ist. Das Folgende ist der Funktionscode:
Funktion BtoS (bstr)
Wenn nicht, ist es Null (bstr), dann
für i = 0 bis lenb(bstr) - 1
bchr = midb(bstr,i+1,1)
If ascb(bchr)>127 Then 'Chinesische Zeichen sind Doppelbytes, daher müssen zwei Zeichen zusammen verarbeitet werden
temp = temp&chr(ascw(midb(bstr, i+2, 1)&bchr))
i = i+1
Anders
temp = temp&chr(ascb(bchr))
Ende wenn
nächste
Ende wenn
BtoS=temp
Endfunktion
(2) Den Inhalt der Datei (oder des Textfelds) abrufen.
In tatsächlichen WEB-Anwendungen kann der Upload-Vorgang mehrere Inhalte umfassen, z. B. mehrere Textfelder, mehrere Dateien usw. Dateien und Textfelder sind leicht zu unterscheiden. Die Dateidaten enthalten die Zeichenfolge „filename=". Daher haben wir die folgende allgemeine Funktion geschrieben, mit der sowohl Dateiinhalte als auch Textfeldinhalte extrahiert werden können (Binärkonvertierung erforderlich):
Funktion getdata(byval data, byval divider, final) 'data repräsentiert eine Binärzeichenfolge; symbol; final stellt die Endposition der Daten dar
filename=chrb(102)&chrb(105)&chrb(108)&chrb(101)&chrb(110)&chrb(97)&chrb(109)&chrb(101)&chrb(61)&chrb(34) 'Binär der Zeichenfolge „Dateiname“ express
bncrlf=chrb(13)&chrb(10) 'Binäres Wagenrücklaufzeichen
startpos = instrb(data,divider)+lenb(divider)+lenb(bncrlf) 'Startposition
endpos = instrb(startpos,data, Divider)-lenb(bncrlf) 'Endposition
part1 = midb(data, startpos, endpos-startpos) 'Inhalt zwischen zwei Trennzeichen
firstline = midb(part1, 1, instrb(part1, bncrlf)-1) ' Beschreibungsabsatz vor dem Inhalt
If (instrb(firstline,filename)=0) Then 'Wenn es sich um ein Textfeld handelt, rufen Sie den Inhalt der Textfeldzeichenfolge ab
stemp=midb(part1,instrb(part1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf),lenb(part1)-instrb(part1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf))
getdata=BtoS(stem)
Else 'Wenn es sich um eine Datei handelt, holen Sie sich den binären Inhalt der Datei
Getdata=midb (part1, instrb (part1, bncrlf&bncrlf)+lenb (bncrlf&bncrlf), lenb (part1)
-instrb(part1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf))
Ende wenn
Final=Endpos
Funktion beenden
Rufen Sie diese Funktion direkt im Programm auf, um den Inhalt der erforderlichen Datei (oder des Textfelds) abzurufen, wie unten gezeigt:
<%
Content=getdata (Daten, Teiler, Position)
%>
3) Die Ermittlung des Dateinamens wurde zuvor analysiert. Das Feld „filename=" des hochgeladenen Dateidatenstroms enthält den Namen und den absoluten Pfad der Datei. Im Allgemeinen müssen wir nur den Dateinamen im Pfad extrahieren. Das Folgende ist der Programmcode:
<%.
namepos=instrrev(B2S(firstline),chr(92)) 'firstline sind die oben erhaltenen Beschreibungsteildaten, chr(92)
äußern"/"
filename=midb(firstline,namepos+1,lenb(firstline)-namepos-1) 'Den Dateinamen abrufen
%>
Verwenden Sie ASP, um die Datei-Upload-Funktion direkt zu implementieren.
Wenn Sie Binärobjekte verarbeiten müssen, können Sie das FILESYSTEMOBJECT-Objekt nur zum Verschieben, Kopieren, Löschen und anderen Vorgängen verwenden die zuvor in diesem Artikel vorgestellten Methoden. Jetzt kann das ADO.STREAM-Objekt in ASP jedoch gleichzeitig Textobjekte und Binärobjekte bedienen (kann unter http://www.microsoft.com/data heruntergeladen werden) und Sie können es verwenden, um den Datei-Upload direkt zu implementieren Funktion in ASP. Im Folgenden stellen wir den Implementierungsprozess vor.
1) Öffnen Sie das STREAM-Objekt.
Wenn Sie die Datei speichern möchten, müssen Sie den gesamten Inhalt des Objekts speichern. Daher müssen wir zwei (oder mehr) STREAM-Objekte erstellen, von denen eines der Quelldatenstrom ist, der die anfänglichen Binärdaten empfängt, und das andere der Zieldatenstrom ist, der die verarbeiteten Daten vom Quelldatenstrom empfängt in der gewünschten Datei speichern.
<%
set str=server.CreateObject("ADODB.Stream") 'str ist der Quelldatenstrom
str.Mode=3 'Stellen Sie den Öffnungsmodus ein, 3 ist lesbar und beschreibbar
str.Type=1 'Legen Sie den Datentyp fest, 1 sind Binärdaten
str.Öffnen
set desc=server.CreateObject("ADODB.Stream") 'desc ist der Zieldatenstrom
desc.Mode=3
Desc.Type=1
desc.Öffnen
%>
2) Inhalte zwischen STEAM-Objekten kopieren
In diesem Teil müssen Sie den Anfang der Datei im Quelldatenstrom lokalisieren und die Länge des Dateiinhalts ermitteln, bevor Sie die Datei korrekt in den Zieldatenstrom kopieren und speichern können Der Programmcode lautet wie folgt:
<%
formdata=Request.BinaryRead(Request.TotalBytes) 'Formulardaten sind alle hochgeladenen Inhalte
str.Write formdata 'Quelldatenstrom zuweisen
str.position=count-lenb(result)-2 'Position zeigt auf den Anfang der Datei
str.copyto desc, lenb(filecotent) 'lenb(filecontent) stellt die Länge der Datei dar
desc.SaveToFile fullpath,2 'Speichern Sie die Datei unter dem durch fullpath angegebenen Pfad und Namen
%>
3) Schließen Sie das STEAM-Objekt.
Nachdem die Programmierung abgeschlossen ist, sollte das STEAM-Objekt geschlossen und freigegeben werden, wie unten gezeigt:
<%.
Beschr. Schließen
Setze desc=nothing
Str. schließen
Setze STR=nichts
%>
Zusammenfassung
Dieser Artikel bietet eine Methode zum direkten Implementieren des Datei-Uploads mithilfe von ASP, die in dem von dieser Einheit entwickelten Informationsverwaltungssystem gut angewendet wurde. Die Praxis hat gezeigt, dass diese Methode einfacher und effizienter ist als mehrere herkömmliche Methoden zum Hochladen von Dateien.