Een bestand uploaden naar de server
Door Michiel van Otegem
10 november 2000
Een bestand van de gebruiker's computer uploaden naar de web-server is met behulp van
HTML-formulier (HTML versie 3.2 en hoger) en ASP eenvoudig. Hiervoor hoeft op de computer
van gebruiker geen extra software geïnstalleerd te worden. Op de server moet echter wel
software aanwezig zijn die het bestand kan afhandelen.
Voor de software op de server zijn meerdere mogelijkheden. Met Internet Information Server 4.0
wordt de Posting Acceptor meegeleverd, deze is echter moeilijk te programmeren, waardoor
de meeste programmeurs gebruik maken van een alternatief.
Het meest gebruikte upload component is
SA-FileUP van
Software Artisans, waarvan
hieronder voorbeeld code staat. Andere alternatieven zijn o.a.
AspUpload van
Persits Software en
DundasUpload (gratis) van
Dundas.
Het HTML-formulier waarmee het uploaden gedaan wordt moet twee onderdelen bevatten:
- Het formulier-attribuut enctype="multipart/form-data", als volgt:
<FORM ENCTYPE="multipart/form-data" METHOD="POST" ACTION="uploadsimple.asp">
Dit is zodat de server weet dat er een ander type formulier gebruikt wordt dan normaal, waarmee
mogelijk bestanden meegestuurd kunnen worden.
- Een of meerdere formulier-velden van het type file, als volgt:
<INPUT TYPE="FILE" NAME="bestand1">
In de ASP-pagina waar het formulier naar gestuurd wordt, wordt achtereenvolgens het FileUp object
gestart, het bestand opgeslagen in de daarvoor bedoelde map en het object weer gesloten. Voordat
het bestand wordt opgeslagen wordt eerst bepaald dat het bestand niet groter dan 15 kB mag zijn.
Wordt dit niet gedaan, dan kan met SA-FileUp een bestand van maximaal 2 GB naar de server verstuurd
worden.
Let er op dat ASP 2.0 niet met dit formulier-type overweg kan (zonder hulp van een component).
ASP 3.0 kan dit wel, maar leest het gehele formulier dan als binaire data. Die data moet vervolgens met
code "handmatig" worden afgehandeld (hetgeen niet gemakkelijk is). Dit betekent dat de formulier-waarde
omschrijving niet beschikbaar is in de Form collectie van het Request object
en daarom uitgelezen moet worden via de Form collectie van SA-FileUp.
Voorbeeld HTML
<html>
<body BGCOLOR="#FFFFFF">
<form METHOD="POST" ENCTYPE="multipart/form-data" ACTION="uploadsimple.asp">
Bestand: <input TYPE="FILE" NAME="bestand1"><br>
Omschrijving: <input TYPE="TEXT" NAME="omschrijving"><br>
<input TYPE="SUBMIT" VALUE="Stuur bestand">
</form>
</body>
</html>
Voorbeeld ASP
<%
'//Alle variabelen moeten gedeclareerd worden
Option Explicit
'//Declareer variabelen
Dim oUpload
Dim sUserFilename, sOmschrijving
Dim lTotalBytes
'//Gebruik FileUp object
Set oUpload = Server.CreateObject("SoftArtisans.FileUp")
'//Bestand mag maximaal 15 kB zijn
oUpload.MaxBytes = 15000
'//Bepaal in welke map de bestanden worden gezet
oUpload.Path = Server.Mappath("upload")
'//Sla het bestand op als upload1.tst
oUpload.SaveAs "upload1.tst"
'//Vraag het totale aantal bytes van het bestand op
lTotalBytes = oUpload.TotalBytes
'//Vraag de naam van het bestand op
sUserFilename = oUpload.UserFilename
'//Gebruik Form collectie van het upload component
sOmschrijving = oUpload.Form("Omschrijving")
'//Ruim object op
Set oUpload = Nothing
%>
<HTML>
<BODY BGCOLOR="#FFFFFF">
<%
'//Schrijf resultaat naar de browser
Response.Write "Bestand: " & sUserFilename & "<br>"
Response.Write "Aantal bytes: " & lTotalBytes & "<br>"
Response.Write "Omschrijving: " & sOmschrijving
%>
</BODY>
</HTML>
|