Results 1 to 4 of 4

Thread: VBScript, SQL: Bilder in Datenbank speichern

  1. #1
    umbre
    Gast

    VBScript, SQL: Bilder in Datenbank speichern

    Hallo!

    ich habe ein grandioses Problem:

    Ich möchte mit VBScript Bilder der Größe 300KB(!!!!) in der Datenbank speichern. Arbeite mit MS SQL Server 2000.

    Ich weiss, dass es nicht sinnvoll ist, Bilder direkt in der Datenbank zu speichern, sondern nur die Pfade der Bilder. Das hab ich auch hinbekommen.

    ... aber mein "Arbeitgeber" will das unbedingt so, egal wie gross die DB auch wird...

    Hintergrund hierfür ist, dass die komplette DB auf eine externe Datenbank kopiert werden soll und anschliessend mit beiden DB´s gleichzeitig gearbeitet werden soll.
    Und weil wir nur die DB´s kopieren wollen (auf den anderen Server), und nicht die Verzeichnisse der vorhandenen Bilder, ist dies m.E. die einzigste Möglichkeit, die Bilder direkt in der DB abzuspeichern.

    Sollte jemand von euch einen praktischeren Vorschlag parat haben, wie ich die DB´s effizienter von einem Server zum anderen kopieren könnte, möchte ich interessenhalber trotzdem wissen, wie man Bilder direkt in die DB´s speichert (so unsinnig das auch sein mag!)

    Kann mir jemand von euch helfen?

    Gruss, Umbre

  2. #2
    die Gütige ... Gudula's Avatar
    Join Date
    04/2001
    Location
    aus dem Sauerland
    Posts
    10.333

    Re: VBScript, SQL: Bilder in Datenbank speichern

    Hi

    diese beiden Artikel könnten Dir evtl. helfen. Allerdings kann ich auch nicht mehr dazu sagen, weil ich es selbst noch nicht ausprobiert habe. Aber vielleicht jemand anderes.

    http://www.aspheute.com/artikel/20001030.htm
    http://www.dreamworker.de/foren/view...?TopicID=11077

    Grüße, Gudula
    Herzliche Grüße, Gudula
    per aspera ad astra
    Ich bin kein Klugscheißer, ich weiß es wirklich besser!

  3. #3
    umbre
    Gast

    Re: VBScript, SQL: Bilder in Datenbank speichern

    hallo!

    erstmal danke für die rasche antwort.

    bin gerade am ausprobieren. gebe dann bescheid, wenn und wie es geklappt hat.

    vielen dank!

    gruss, umbre

  4. #4
    umbre
    Gast

    Re: VBScript, SQL: Bilder in Datenbank speichern

    Anzeigen:
    Webhosting ab 3,99 €
    Hallöchen!

    nach langer zeit des ausprobierens kann ich nun endlich die lösung präsentieren (die eigentlich poblich einfach ist, wenn man´s weiss)

    zutaten:
    die kostenlose komponente newObjects ActiveX Pack 1 (wird benötigt, um binäre daten aus der datei auszulesen bzw. um aus binären daten z.b. eine .jpg-datei zu machen)

    DATEN IN DIE SQL-DB:
    Set sf = Server.CreateObject("newObjects.utilctls.SFMain")
    Set strm = sf.OpenFile(path)
    bin = strm.ReadBin(bytes)
    ' Reads 300000 bytes from the stream; bytes ist eine variable und auf 300000 gesetzt

    ' hier wird die DB aktualisiert. wichtig: appendchunk, um das bild binär zu speichern
    With daten
    .AddNew
    .Fields("PICTURE").AppendChunk bin1
    .Update
    END With
    strm.close

    das war alles. die spalte "PICTURE" enthält nun daten im binärformat.

    BILD AUS DER DB AUSLESEN

    hinweis: bevor das bild im browser angezeigt wird, wird es zuvor auf der lokalen platte im Temp-verzeichnis als z.b. .jpg gespeichert und unmittelbar nach speicherung aufgerufen.

    lngOffset=0
    lngPic1Size = daten.fields("Picture").ActualSize // aktuelle grösse der binären daten in der DB ermitteln
    Response.Write lngPic1Size // grösse im browser anzeigen
    DO WHILE lngOffset < lngPic1Size
    varChunk1 = daten.fields("Picture").GetChunk(conChunkSize) // conchunksize ist ne konstante und ebenfalls auf 300000 (bytes) gesetzt; getchunk liest binäre daten aus der DB
    'Response.BinaryWrite varChunk1
    'varBild1 = varBild1 & varChunk1 // je nach dem wie viele bytes (conchunksize) man auf einmal lesen will, bwnötigt man diese zeile. ich persönlich habe alles auf einmal aus der db ausgelesen und benötige diese zeile nicht
    lngOffset = lngOffset + conChunkSize
    LOOP

    Set sf1 = Server.CreateObject("newObjects.utilctls.SFMain")
    Set filedown1 = sf1.CreateFile("C:\Temp\picture.jpg") //binärdaten als picture.jpg auf der lokalen platte speichern
    nob1=filedown1.WriteBin (varChunk1) // nob=number of bytes. dient zur kontrolle, ob auch tatsächlich alle binärdaten ausgelesen wurden
    filedown1.close
    Response.Write nob1

    will man das bild anzeigen lassen, gibt man einfach den html-code
    <img src="C:\Temp\picture.jpg" width="150" hight="75">
    an.

    so, ich freue mich, dass der müll endlich geklappt hat und bedanke mich recht herzlich für die tipps von gudula, die mich letztendlich zum ziel gebracht haben.

    gruss, umbre

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •