Mit reinem ASP-Code kann man Dateien als binäres Objekt in Datenbanken (ADO)uploaden. Die Dateien werden als BLOB (binary long object) in die DB gespeichert.
Ich verwende die uplmod.asp als Upload-Modul. Diese ASP-Seite sieht vom Code her einer VB-Komponente sehr ähnlich. Sie verwendet das Dictionary.Object als Zwischenspeicher für die binären Daten.
Damit die uplmod funktioniert, müssen Sie mindestens VBScript v5.0 auf dem Webserver installiert haben!
Wir beginnen damit eine HTML-Form zu schreiben. Die notwendigen Eigenschaften sind method: POST und für den Datentyp: multipart/form-data
uploadform.asp
... <body> <form method="POST" enctype="multipart/form-data" action="uploadexecuter.asp"> Datei auswählen die in DB gespeichert wird:<br> <input type=file size=50 name="file1"><br> <input type=submit value="Upload"> </form> ... |
In uploadexecuter.asp wird nun die "uplmod.asp" includiert. Die Seite managt den Upload und die Überführung der Daten in die DB.
uploadexecuter.asp
<%@ Language=VBScript %> <!-- #include file="uplmod.asp" --> <% '-------- Fileuploader instanziieren Set Uploader = New FileUploader '-------- Uploadprozess starten Uploader.Upload() '-------- Überprüfen ob Filesupload If Uploader.Files.Count = 0 Then Response.Write "File(s) not uploaded." Else '-------- Durchlaufen der Item(für mehrere Dateien gleichzeitig) For Each File In Uploader.Files.Items '-------- Verbindung zur DB aufbauen set conn = server.CreateObject("ADODB.Connection") strConn = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;" strConn = strConn & "Data Source=" & Server.MapPath("./") & "dbupload.mdb;" conn.Open strConn set rs = server.CreateObject("ADODB.Recordset") rs.Open "aspupload", conn, 2, 2 '-------- Datensatz hinzufügen rs.AddNew rs("DatName") = File.FileName rs("DatSize") = File.FileSize rs("DatContent") = File.ContentType '-------- Datei an Datenbank senden File.SaveToDatabase rs("DatObj") '-------- Datensatz updaten(speichern) rs.Update rs.Close set rs = nothing set conn = nothing Response.Write "Datei in DB gespeichert: " & File.FileName & "<br>" Response.Write "Dateigröße: " & File.FileSize & " bytes<br>" Response.Write "MIME/ContentType: " & File.ContentType & "<br><br>" Next End If %> |
Wer jetzt z.B. ein Bild in die DB gespeichert hat, muß den ContentType mit abgelegt haben. Dann kann man die Bilder ohne Probleme aus der DB auslesen.
Das geht so:
Als erstes erzeuge ich eine ASP-Seite namens...
Responsebinary.asp
<%@ Language=VBScript %> <% '------ Datenbankverbindung herstellen set conn = server.CreateObject("ADODB.Connection") strConn = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;" strConn = strConn & "Data Source=" & Server.MapPath("./") & "dbupload.mdb;" conn.Open strConn set rs = server.CreateObject("ADODB.Recordset") '------ ID über den Querystring abfragen strSQL = "SELECT * FROM aspupload where id = " & Request.QueryString("ID") rs.Open strSQL,conn '------ bestimmen des ContentType Response.ContentType = rs.Fields("DatContent") '------ Ausgabe des Daten-Feldes per Response.BinaryWrite Response.BinaryWrite rs.Fields("DatObj") %> |
Und als leztes noch eine Zeile in einer HTML-Seite um das Bild zu integrieren.
view.htm
<imgsrc="responsebinary.asp?id=22"> |
Unten gibt den Kompletten-Code mit DB zum Download. Viel Spaß!