Kategorien:
Suchbegriffe:
Suchfelder:
Suche starten
Neue Beiträge / Top 7
Alle Artikel / Liste
Bücher zu ASP/ASP.Net
Startseite / Hilfe
Fragen zu ASP/ASP.NET
Datenschutzrichtlinen
Impressum / Kontakt
Das ASP.Net Codebook. Die unentbehrliche Referenz für alle ASP.Net-Entwickler [Autoren: Stefan Falz, Karsten Samaschke]
Active Server Pages-FAQ
Active Server Pages - FAQ (v. 1.50) © 2000 - 2020 by Stefan Falz Webconsulting

GetFile! Dynamischer Dateiupload im Browser

Datenbankzugriffe Zurück Druckversion Stefan Falz 16.02.2001
Frage: Wie kann ich Bilder, die in einer Datenbank gespeichert sind, an den Browser senden?
Sicher kennen Sie die Funktion der meisten Uploadmodule, Dateien direkt in Datenbankfelder
zu speichern. Ob dies sinnvoll ist oder nicht, darüber könnte man sich tagelang streiten. Aber
wenn sich jemand wirklich dazu entscheidet, wird es schon seinen Grund haben. Nur möchten
Sie jetzt natürlich diese Daten auch wieder aus der Datenbank auslesen und die gespeicherten
Dateien zum Download bereitstellen oder, wenn es sich um Bilder handelt, diese direkt zum
Browser senden.

Nachfolgend ein Beispiel, dass eine Binärdatei (Grafik) aus einem Datenbankfeld ausliest
und den Inhalt an den Browser sendet. Da der ContentType mitgesendet wird, ist der Browser
in der Lage, zu erkennen, um welchen Dateityp es sich handelt und dementsprechend zu
reagieren.



[binaryread.asp]
<%
' --- Zusammenstellen der Datenbankverbindungsinformationen
Dim strProvider
    strProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
Dim strDatabase
    strDatabase = "DATA SOURCE=" & Server.MapPath ("./") & "\verzeichnis\datenbank.mdb;"
Dim strComplete
    strComplete = strProvider & strDatabase

' --- Erstellen und Öffnen der Datenbankverbindung
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open strComplete

' --- Zusammenstellen des SQL-Statements. Achtung ! Es kann immer nur
' --- 1 Datei auf einmal gesendet werden. Sie können also z.B. keine 2 oder
' --- mehr Bilder in einer Schleife ausgeben, da der Browser dies nicht
' --- interpretieren kann.
' --- Um mehr über die Einbindung einer solchen Datei zu erfahren, sehen Sie
' --- sich bitte den Artikel Bilder dynamisch durch ASP an den Browser senden an

Dim GetBinarySQL
    GetBinarySQL = "SELECT b_content_type, b_data FROM tblBinaryData WHERE b_id = 1"

' --- Erstellen und Öffnen des Recordsets
Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.Open GetBinarySQL, objConn, 2, 2

        ' --- Prüfen, ob ein Datensatz gefunden wurde
        If Not objRS.EOF Then

            ' --- Ausgabe des Contenttypes (wichtig, da die Datei ansonsten
            ' --- downgeloadet wird, da der Browser den Dateityp nicht erkennt
            Response.ContentType = objRS.Fields("b_content_type")

            ' --- Ausgabe der Binärdaten (Achtung: BinaryWrite)
            Response.BinaryWrite objRS.Fields("b_data")

        End if

' -- Schliessen und terminieren des Recordsets
    objRS.Close
Set objRS = Nothing

' --- Schliessen und terminieren der Datenbankverbindung
    objConn.Close
Set objConn = Nothing

' --- Ausgabe beenden, da ansonsten evtl. weitere Ausgaben an den
' --- Binärstream angehangen werden und die gesendete Datei somit
' --- für den Browser nicht lesbar ist.
Response.End
%>


Auch hier haben wir Ihnen die verwendeten Dateien als Zipfile zum Download bereitgestellt.

artikel_103.zip (14 KB)

Sehr gut
1 2 3 4 5 6
Ungenügend
Zurück | Bisherige Aufrufe: 20739 | Bisherige Bewertungen: 20 | Durchschnitt: 2,40
Stefan Falz Webconsulting