| Praktischer Einsatz
Kopieren Sie die Datei 'FileUploadJS.asp' in ein beliebiges Verzeichnis (empfehlenswert ist '/include') und binden Sie die Datei per include-Anweisung in Ihr Skript ein:
<!-- #include file="/include/FileUploadJS11.asp" -->
Erzeugen Sie eine Instanz der Klasse cFileUpload und rufen Sie die Upload-Methode auf dieser auf:
Upload = new cFileUpload()
Upload.Upload();
Das gleiche in VBScript:
set Upload = FileUpload()
Upload.Upload()
Anschließend können Sie sofort auf die Form- und Files-Kollektionen zugreifen; um ein einzelnes Formularelement abzurufen, gehen Sie analog zum Request.Form-Objekt folgendermaßen vor::
strVorname = Upload.Form('Vorname').Value(); // bzw. einfach
strVorname = Upload.Form('Vorname');
Das gleiche in VBScript:
strVorname = Upload.Form("Vorname").Value() ' bzw. einfach
strVorname = Upload.Form("Vorname")
Handelt es sich bei diesem Element um ein mehrfach im Formular auftretendes, so erhalten Sie auf diese Weise alle diesem Element zugeordneten Werte - diese sind durch Kommata getrennt. Um einen einzelnen Wert abzufragen, übergeben Sie der Value-Methode den gewünschten Index, die Anzahl der Werte kann über die Count-Eigenschaft abgefragt werden:
strName = Upload.Form('Name').Value(2);
intAnzahl = Upload.Form('Name').Count;
Das gleiche in VBScript:
strName = Upload.Form("Name").Value(2)
intAnzahl = Upload.Form("Name").Count
Um alle Elemente der Schleife zu durchlaufen, können Sie in JScript ein enumerator-Objekt verwenden::
for (e = new Enumerator(Upload.Form); !e.atEnd(); e.moveNext())
Response.Write(e.item() + ': ' + Upload.Form(e.item()) + '<br>');
In VBScript: erreichen Sie dies mittels einer for each-Schleife:
for each item in Upload.Form
Response.Write Item & ": " & Upload.Form(Item) & "<br>"
next
Um auf die heraufgeladenen Dateien zuzugreifen, verwenden Sie die Files-Collection. Sie können über die Eigenschaft IsEmpty testen, ob die gewünschte Datei vorhanden ist, darüberhinaus stehen Ihnen die Eigenschaften Name (Name des Feldes), Path (Pfad der Datei), FileName (Dateiname), FileExt (Dateierweiterung), ContentType sowie Size (Größe der Datei) zur Verfügung. Mit Hilfe der Methode SaveAs können Sie die Datei auf dem Server speichern, GetImgType liefert Ihnen den Bildtyp der Datei zurück, GetImgDim die Dimension (Breite & Höhe), natürlich nur, falls es sich bei der Datei um ein Bild handelt.
with (Upload.Files('Bild')){
SaveAs('/upload', FileName, true);
if (ImgType != itNone){
Response.Write('Breite: ' + ImgWidth + '<br>');
Response.Write('Höhe: ' + ImgHeight);
}
}
Das gleiche in VBScript:
Upload.Files("Bild").SaveAs "/upload", FileName, true
if not(Upload.Files("Bild").ImgType = itNone) then
Response.Write "Breite: " & Upload.Files("Bild").ImgWidth & "<br>"
Response.Write "Höhe: " & Upload.Files("Bild").ImgHeight
end if
Um alle Elemente der Files-Kollektion zu durchlaufen, können Sie anlog zu Forms ein enumerator-Objekt in JScript oder eine for each - Schleife in VBScript verwenden.
Sie haben die Möglichkeit, die Größe und den Typ der Dateien zu beschränken, die auf Ihren Server heraufgeladen werden dürfen:
- MaxFileSize
bestimmt die maximale Größe einer einzelnen Datei in Bytes (0 = keine Beschränkung)
- MaxFileCount
bestimmt die Anzahl der während eines Upload-Vorgangs max. zu übertragenden (nichtleeren) Dateien ( 0 = keine Beschränkung)
- MaxTotalBytes
bestimmt die maximale Größe der geposteten Daten in Byte (0 = keine Beschränkung)
Beachten Sie, dass dies nicht der Gesamtzahl der Bytes der einzelnen Dateien entspricht, da hierin noch zusätzliche Headerdaten enthalten sind, Sie sollten diesen Wert daher eher ein paar Byte höher ansetzen.
- AllowedFileExt
Liste der erlaubten Dateierweiterungen, durch Kommata getrennt, z.B. 'gif,jpg' ('' = alle erlaubt)
- AllowedFileType
Liste der erlaubten Content-Typen, durch Kommata getrennt, z.B. 'image/*' ('' = alle erlaubt)
- DeniedFileExt
Liste der verbotenen Dateierweiterungen, durch Kommata getrennt, z.B. 'exe' ('' = keine verboten)
- DeniedFileType
Liste der verbotenen Content-Typen, durch Kommata getrennt, z.B. 'application' ('' = keine verboten)
Die Allowed/Denied-Listen werden in o.g. Reihenfolge abgearbeitet, als Wildcard ist das * zulässig.
Beachten Sie, dass die Upload-Klasse ein Verzeichnis für temporäre Dateien benötigt, standardmäßig wird das Verzeichnis './temp' verwendet; Sie können dieses durch Setzen der Eigenschaft 'PathToTemp' anpassen - der (anonyme) Benutzer muss Ändern-Rechte auf diesem Verzeichnis besitzen.
Fehlerbehandlung:
Ihnen stehen zwei Möglichkeiten zur Verfügung, um die Fehlerbehandlung an Ihre spezifischen Anforderungen anzupassen; durch Setzen der Eigenschaft Error.Level können Sie bestimmen, wie detailliert die Fehlermeldungen ausgegeben werden sollen - zum Testen empfiehlt sich die Einstellung elExtended, für den Einsatz sollte die Voreinstellung elDefault beibehalten werden.
Mittels der Eigenschaft Error.Mode können Sie bestimmen, wie das Upload-Objekt auf auftretende Fehler reagieren soll, folgende Optionen stehen zur Verfügung:
- emSilent
Bei dieser Einstellung werden keine Fehler bzw. Exceptions ausgelöst; ob die Verarbeitung erfolgreich war, können Sie durch Abfrage von Error.Number ermitteln.
- emJscript
Bei einem Fehler wird eine JScript-Exception geworfen.
- emVBScript
Bei einem Fehler wird ein VBScript - konformer Fehler (mittels Err.Raise) erzeugt.
|