Um Dateien auf einen Webserver zu transportieren ist ursächlich das FTP (File Transfer Protoll) geschaffen worden. Um per FTP Uploads zu machen brauchen Sie
· Einen FTP Server
· Einen FTP Client
· Port 21 verfügbar
· Benutzernamen und Passwort.
Das ist für eine normalen Benutzerkreis u.U. schon zuviel. Seit HTTP 1.1 gibt es die Möglichkeit per POST Daten upzuloaden
Dazu brauchen Sie aber auf dem Server ein Stück Software, der den Upload entgegennimmt und als File speichert. Im allgemeinen nehmen die meisten Entwickler gekaufte Komponenten wie von SA-Fileup.
Unter IIS4 gibt es aber eine kostenlose Komponente, den Posting Acceptor. Sie installieren diesen aus dem Option Pack. Dieser beinhaltet eine Server DLL (cpshosts.dll). Für den Client gibt es ein Active X Control um den Upload per Drag & Drop zu ermöglichen. Sie können aber auch direkt aus einer HTML Seite den Upload machen. Dies ist z.B. besser wenn unterschiedliche Browser zum Einsatz kommen. Das Verzeichnis in das der Upload erfolgen soll, muss sowohl NTFS als auch im IIS Schreibrechte haben.
Auf Druck des Durchsuchen Buttons öffnet sich automatisch ein Filedi-alog. Nach Auswahl der gewünschten Datei, schließt sich das Fenster wieder. Der Dateinamen samt lokalen Pfad wird automatisch in die Textbox eingetragen. Nach Druck des Buttons Upload wandert die Datei per http zum Server und wird dort im vorgegeben Verzeichnis gespeichert.
Der Code in der ASP Seite zeigt, das wenig getan werden muss.
<%@ Language=VBScript %> <html> <body> <form enctype="multipart/form-data" action="/scripts/cpshost.dll?PUBLISH" method="POST"> <center><table> <tr> <td align="left">Datei für den Upload</td> <td align="left"><input name="file" type="file" size="20"></td> </tr> <tr> <td align="left">Ziel Verzeichnis</td> <td align="left"><input name="TargetURL" value="/uploads/" size="20"> <input type="Submit" value="Upload..."></td> </tr> <table></center> </form> </body> </html> |
Bei Windows 2000 können Sie die Date cpshost manuell installieren und registrieren. Eine neuere Version des Posting Acceptors ist im SiteServer 3.0 enthalten.
Ein Problem von Posting Accptor ist, das Session Daten verloren gehen, da der Redirect auf die DLL erfolgt. Eine Lösung ist per Hidden Fields die nötigen Daten weiterzureichen.
<INPUT TYPE=HIDDEN NAME="Var1" VALUE="<%= Session("Var1") %>">. <form enctype= "multipart/form-data"action="<%=url%>/post/cpshost.dll?PUBLISH? <%=url%>/UploadAction.asp" | < /TR> < /TR> < /TR>