DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Bernhard Elbl Artikel Drucken
        
Binäre Daten in eine DB uploaden

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ß!


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente

  Erfasst am: 23.03.2001
  Gültig bis: 22.04.2001
15 Ratings
Bewertung: 97,3%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG